{"record":{"id":"f46575a9dd6a0e60","repo":"quarkusio/quarkus","slug":"illegal-type-in-hierarchy-type","errorCode":null,"errorMessage":"Illegal type in hierarchy: ${type}","messagePattern":"Illegal type in hierarchy: (.+?)","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/JandexUtil.java","lineNumber":306,"sourceCode":"                return ArrayType.create(mapGenerics(arrayType.constituent(), mapping), arrayType.dimensions());\n            case CLASS:\n                return type;\n            case PARAMETERIZED_TYPE:\n                ParameterizedType parameterizedType = type.asParameterizedType();\n                Type owner = null;\n                if (parameterizedType.owner() != null) {\n                    owner = mapGenerics(parameterizedType.owner(), mapping);\n                }\n                return ParameterizedType.create(parameterizedType.name(),\n                        mapGenerics(parameterizedType.arguments(), mapping).toArray(new Type[0]), owner);\n            case TYPE_VARIABLE:\n                Type ret = mapping.get(type.asTypeVariable().identifier());\n                if (ret == null) {\n                    throw new IllegalArgumentException(\"Missing type argument mapping for \" + type);\n                }\n                return ret;\n            default:\n                throw new IllegalArgumentException(\"Illegal type in hierarchy: \" + type);\n        }\n    }\n\n    private static ClassInfo fetchFromIndex(DotName dotName, IndexView index) {\n        final ClassInfo classInfo = index.getClassByName(dotName);\n        if (classInfo == null) {\n            throw new IllegalArgumentException(\"Class \" + dotName + \" was not found in the index\");\n        }\n        return classInfo;\n    }\n\n    /**\n     * Returns the enclosing class of the given annotation instance. For field, method or record component annotations,\n     * this will return the enclosing class. For parameters, this will return the enclosing class of the enclosing\n     * method. For classes, it will return the class itself. For type annotations, it will return the class enclosing\n     * the annotated type usage.\n     *\n     * @param annotationInstance the annotation whose enclosing class to look up","sourceCodeStart":288,"sourceCodeEnd":324,"githubUrl":"https://github.com/quarkusio/quarkus/blob/e1c734241f34c7919086ceb4c9262b4a58f6de44/independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/JandexUtil.java#L288-L324","documentation":"IllegalArgumentException from JandexUtil.mapGenerics default branch: the type being mapped has a Jandex kind not handled by the switch (not array, class, parameterized, or type variable) — e.g. a wildcard or unresolved type appearing where a concrete mapped type is required. The offending type is interpolated into the message.","triggerScenarios":"Thrown at independent-projects/resteasy-reactive/common/processor/src/main/java/org/jboss/resteasy/reactive/common/processor/JandexUtil.java:306 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Replace the wildcard/unusual generic construct with a concrete type in the resource signature","Report as a RESTEasy Reactive issue if the type usage looks valid"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}