{"record":{"id":"32b29ba51c7d529f","repo":"oracle/graal","slug":"unresolved-recordcomponent-s","errorCode":null,"errorMessage":"unresolved RecordComponent %s","messagePattern":"unresolved RecordComponent (.+?)","errorType":"exception","errorClass":"JVMCIError","httpStatus":null,"severity":"error","filePath":"espresso-compiler-stub/src/com.oracle.truffle.espresso.vmaccess/src/com/oracle/truffle/espresso/vmaccess/EspressoExternalVMAccess.java","lineNumber":720,"sourceCode":"\n    @Override\n    public ResolvedJavaRecordComponent asResolvedJavaRecordComponent(Constant constant) {\n        if (constant instanceof EspressoExternalObjectConstant espressoConstant &&\n                        \"java.lang.reflect.RecordComponent\".equals(espressoConstant.getValue().getMetaObject().getMetaQualifiedName())) {\n            Value value = espressoConstant.getValue();\n            /*\n             * The default JVMCI lookup accepts a host RecordComponent. Mirror its matching logic for\n             * this guest reflection object.\n             */\n            ResolvedJavaType declaringRecord = EspressoExternalConstantReflectionProvider.classAsType(value.invokeMember(\"getDeclaringRecord\"), this);\n            String name = value.invokeMember(\"getName\").asString();\n            ResolvedJavaType type = EspressoExternalConstantReflectionProvider.classAsType(value.invokeMember(\"getType\"), this);\n            for (ResolvedJavaRecordComponent component : declaringRecord.getRecordComponents()) {\n                if (component.getName().equals(name) && component.getType().equals(type)) {\n                    return component;\n                }\n            }\n            throw new JVMCIError(\"unresolved RecordComponent %s\", value);\n        }\n        return null;\n    }\n\n    @Override\n    public JavaConstant asFieldConstant(ResolvedJavaField field) {\n        if (!(field instanceof EspressoExternalResolvedJavaField espressoField)) {\n            throw new IllegalArgumentException(\"Expected an EspressoExternalResolvedJavaMethod, got \" + safeGetClass(field));\n        }\n        if (field.isInternal()) {\n            return null;\n        }\n        Value value = espressoField.getReflectFieldMirror();\n        if (value.isNull()) {\n            return null;\n        }\n        return new EspressoExternalObjectConstant(this, value);\n    }","sourceCodeStart":702,"sourceCodeEnd":738,"githubUrl":"https://github.com/oracle/graal/blob/a66e9ccd1d7bf2552883939aa0788dfd0e294aab/espresso-compiler-stub/src/com.oracle.truffle.espresso.vmaccess/src/com/oracle/truffle/espresso/vmaccess/EspressoExternalVMAccess.java#L702-L738","documentation":"Error \"unresolved RecordComponent %s\" thrown in oracle/graal.","triggerScenarios":"Thrown at espresso-compiler-stub/src/com.oracle.truffle.espresso.vmaccess/src/com/oracle/truffle/espresso/vmaccess/EspressoExternalVMAccess.java:720 when the library encounters an invalid state.","commonSituations":"Occurs when a caller violates the contract guarded by this check: unresolved RecordComponent {}","solutions":["Fix the condition reported by the error: unresolved RecordComponent {}","Check the throwing call site and ensure its documented preconditions (argument values, types, environment, or configuration) are satisfied before the call."],"exampleFix":"Validate inputs and environment so that the failing condition does not occur: unresolved RecordComponent {}","handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"a66e9ccd1d7bf2552883939aa0788dfd0e294aab","analyzedAt":"2026-08-14T13:58:47.161Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}