{"record":{"id":"aaa7de7dee27b32c","repo":"quarkusio/quarkus","slug":"unknown-node-type-type","errorCode":null,"errorMessage":"Unknown node type ${type}","messagePattern":"Unknown node type (.+?)","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"extensions/resteasy-reactive/rest-client/deployment/src/main/java/io/quarkus/rest/client/reactive/deployment/MicroProfileRestClientEnricher.java","lineNumber":978,"sourceCode":"                                valueType)) {\n                            throw new RestClientDefinitionException(\"Method \" + headerFillingMethod.declaringClass().toString()\n                                    + \"#\" + headerFillingMethod.name()\n                                    + \" has an unsupported return type for ClientHeaderParam. \" +\n                                    \"Only String and String[] return types are supported\");\n                        }\n                    } else {\n                        if (!isString(valueType)) {\n                            throw new RestClientDefinitionException(\"Method \" + headerFillingMethod.declaringClass().toString()\n                                    + \"#\" + headerFillingMethod.name()\n                                    + \" has an unsupported return type for ClientHeaderParam. \" +\n                                    \"Only String is supported when using complex expressions\");\n                        }\n                    }\n\n                    return new HeaderFillerInfo(valueType, n, supplier);\n\n                } else {\n                    throw new IllegalStateException(\"Unknown node type \" + n.getClass().getName());\n                }\n            }).collect(Collectors.toList());\n\n            AssignableResultHandle headerList = fillHeader.createVariable(List.class);\n            fillHeader.assign(headerList, fillHeader.loadNull());\n            if (headerFillerInfos.size() == 1) {\n                HeaderFillerInfo headerFillerInfo = headerFillerInfos.get(0);\n                ResultHandle headerFillerResult = headerFillerInfo.getResultHandleSupplier().get();\n                BytecodeCreator notNullBranchTrue = fillHeader.ifNotNull(headerFillerResult).trueBranch();\n                Type headerFillerMethodReturnType = headerFillerInfo.getValueType();\n                if (isStringArray(headerFillerMethodReturnType)) {\n                    // repack array to list\n                    ResultHandle asList = notNullBranchTrue.invokeStaticMethod(ARRAYS_AS_LIST, headerFillerResult);\n                    notNullBranchTrue.assign(headerList, asList);\n                } else if (isString(headerFillerMethodReturnType)) {\n                    notNullBranchTrue.assign(headerList, Gizmo.newArrayList(notNullBranchTrue, 1));\n                    notNullBranchTrue.invokeInterfaceMethod(LIST_ADD_METHOD, headerList, headerFillerResult);\n                } else {","sourceCodeStart":960,"sourceCodeEnd":996,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/extensions/resteasy-reactive/rest-client/deployment/src/main/java/io/quarkus/rest/client/reactive/deployment/MicroProfileRestClientEnricher.java#L960-L996","documentation":"The expression parser classifies each parsed node of a ClientHeaderParam value as Verbatim, ConfigName, or Accessible. If a node of any other (unexpected internal) type reaches the header-filler bytecode generator, the build fails with this IllegalStateException. This indicates an internal invariant break, typically only reachable with a framework bug or subclassed parser nodes.","triggerScenarios":"Only when the node list produced by RestClientAnnotationExpressionParser contains a Node subclass other than Verbatim/ConfigName/Accessible — not reachable from user code with the stock parser.","commonSituations":"Practically only seen when running a patched/older mix of Quarkus REST client classes or a custom fork; users should not normally hit this.","solutions":["Verify you are not mixing Quarkus versions of rest-client-reactive artifacts on the build classpath","Clean rebuild (./mvnw clean install) to rule out stale generated classes","If reproducible on a clean checkout, file a Quarkus issue with the failing annotation value"],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Build-time only; if it ever surfaces, treat as a framework bug\ntry {\n    quarkusBuild();\n} catch (IllegalStateException e) {\n    if (e.getMessage().startsWith(\"Unknown node type\")) {\n        throw new IllegalStateException(\"Quarkus internal bug — clean rebuild, then report issue\", e);\n    }\n    throw e;\n}","preventionTips":["Keep all Quarkus rest-client artifacts on the same version (use the Quarkus BOM)","Run ./mvnw clean install when build errors look nonsensical","Do not fork or override internal parser classes"],"tags":["quarkus","rest-client","internal-error","build-time"],"backgroundTag":"internal-state-error","analyzedSha":"e1c734241f34c7919086ceb4c9262b4a58f6de44","analyzedAt":"2026-09-05T17:01:29.979Z","contentChangedAt":"2026-09-05T17:01:29.979Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}