# HG changeset patch # User Doug Simon # Date 1401808300 -7200 # Node ID 23ae0cbcb2ae7bd5958e9c6135aed23ae824aeee # Parent 66a9286203a2f14c623366a847597dab8480556c OptionProcessor needs to find the type parameter of an OptionValue field declaration diff -r 66a9286203a2 -r 23ae0cbcb2ae graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java --- a/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Tue Jun 03 11:51:27 2014 +0200 +++ b/graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java Tue Jun 03 17:11:40 2014 +0200 @@ -107,7 +107,15 @@ optionName = fieldName; } - String optionType = declaredFieldType.getTypeArguments().get(0).toString(); + DeclaredType declaredOptionValueType = declaredFieldType; + while (!types.isSameType(types.erasure(declaredOptionValueType), types.erasure(optionValueType))) { + List directSupertypes = types.directSupertypes(declaredFieldType); + assert !directSupertypes.isEmpty(); + declaredOptionValueType = (DeclaredType) directSupertypes.get(0); + } + + assert !declaredOptionValueType.getTypeArguments().isEmpty(); + String optionType = declaredOptionValueType.getTypeArguments().get(0).toString(); if (optionType.startsWith("java.lang.")) { optionType = optionType.substring("java.lang.".length()); } @@ -318,3 +326,4 @@ return true; } } +