diff --git a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/core/dom/JavacConverter.java b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/core/dom/JavacConverter.java index be77e4242ec..f6e5f70007f 100644 --- a/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/core/dom/JavacConverter.java +++ b/org.eclipse.jdt.core.javac/src/org/eclipse/jdt/core/dom/JavacConverter.java @@ -592,16 +592,20 @@ private VariableDeclaration convertVariableDeclaration(JCVariableDecl javac) { // The array dimensions are part of the variable name if (jcatt.getType() != null) { int dims = countDimensions(jcatt); - res.setType(convertToType(jcatt.getType())); if( this.ast.apiLevel < AST.JLS8_INTERNAL) { res.setExtraDimensions(dims); + res.setType(convertToType(jcatt.getType())); } else { // TODO might be buggy for( int i = 0; i < dims; i++ ) { Dimension d = this.ast.newDimension(); d.setSourceRange(jcatt.pos, 2); res.extraDimensions().add(d); + if( jcatt.getType() instanceof JCArrayTypeTree jcatt2) { + jcatt = jcatt2; + } } + res.setType(convertToType(jcatt.getType())); } } } else if ( (javac.mods.flags & VARARGS) != 0) {