Mercurial > hg > truffle
changeset 16007:23ae0cbcb2ae
OptionProcessor needs to find the type parameter of an OptionValue field declaration
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Tue, 03 Jun 2014 17:11:40 +0200 |
parents | 66a9286203a2 |
children | 76f40e11c820 |
files | graal/com.oracle.graal.options/src/com/oracle/graal/options/OptionProcessor.java |
diffstat | 1 files changed, 10 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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<? extends TypeMirror> 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; } } +