Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorM N Palat2013-11-07 12:51:52 +0000
committerM N Palat2013-11-07 12:51:52 +0000
commitba2b33c0750d6d7311c1eadcadc15015d0ae8f36 (patch)
treeedacbbdb243814ad0a39437f370fed7376dcebd7
parent2077a29bc8cfe42c01e5c07aa5d0c90e2eceb36b (diff)
downloadeclipse.jdt.core-ba2b33c0750d6d7311c1eadcadc15015d0ae8f36.tar.gz
eclipse.jdt.core-ba2b33c0750d6d7311c1eadcadc15015d0ae8f36.tar.xz
eclipse.jdt.core-ba2b33c0750d6d7311c1eadcadc15015d0ae8f36.zip
417659 Bug 417659 Fix for 417659 - [dom][ast][1.8] test failures - ast
structure - when debug tracing is on (see comment )
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java6
-rw-r--r--org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java5
-rw-r--r--org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java38
3 files changed, 36 insertions, 13 deletions
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
index f8015cc5d4..c7efeb04bd 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeAnnotationsConverterTest.java
@@ -110,7 +110,7 @@ public class TypeAnnotationsConverterTest extends ConverterTestSetup {
assertASTNodeEquals(expectedOutput, node);
}
// Test ParameterizedQualifiedReference
- public void _test0003() throws JavaModelException {
+ public void test0003() throws JavaModelException {
String contents =
"public class X<T> {\n" +
" class Y<R> {\n" +
@@ -139,7 +139,7 @@ public class TypeAnnotationsConverterTest extends ConverterTestSetup {
assertASTNodeEquals(expectedOutput, node);
}
// Test ParameterizedQualifiedReference with arrays.
- public void _test0004() throws JavaModelException {
+ public void test0004() throws JavaModelException {
String contents =
"public class X<T> {\n" +
" class Y<R> {\n" +
@@ -168,7 +168,7 @@ public class TypeAnnotationsConverterTest extends ConverterTestSetup {
assertASTNodeEquals(expectedOutput, node);
}
// Test ParameterizedQualifiedReference with arrays.
- public void _test0005() throws JavaModelException {
+ public void test0005() throws JavaModelException {
String contents =
"public class X<T> {\n" +
" class Y<R> {\n" +
diff --git a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
index 538acb97fe..6744ce3c3e 100644
--- a/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
+++ b/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/dom/TypeBindingTests308.java
@@ -699,7 +699,7 @@ public class TypeBindingTests308 extends ConverterTestSetup {
InstanceofExpression expression = (InstanceofExpression) operand.getExpression();
verifyAnnotationOnType(expression.getRightOperand(), new String[]{"@Marker()"});
}
- public void _test018() throws Exception {
+ public void test018() throws Exception {
String contents =
"interface I {\n" +
" void foo(Y<String>.Z z, int x);\n" +
@@ -732,6 +732,9 @@ public class TypeBindingTests308 extends ConverterTestSetup {
VariableDeclarationFragment fragment = (VariableDeclarationFragment) statement.fragments().get(0);
TypeMethodReference initializer = (TypeMethodReference) fragment.getInitializer();
Type type = initializer.getType();
+ assertTrue(type.isQualifiedType());
+ QualifiedType qualifiedType = (QualifiedType) type;
+ checkSourceRange(qualifiedType.getName(), "Z", contents);
verifyAnnotationOnType(type, new String[]{"@Marker()"});
assertEquals("Should be a qualified type", ASTNode.QUALIFIED_TYPE, type.getNodeType());
verifyAnnotationOnType(((QualifiedType) type).getQualifier() , new String[]{});
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
index 40a9ba0876..c117db5caa 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/core/dom/ASTConverter.java
@@ -3440,7 +3440,8 @@ class ASTConverter {
return variableDeclarationStatement;
}
- private void annotateType(AnnotatableType type, org.eclipse.jdt.internal.compiler.ast.Annotation[] annotations) {
+ private int annotateType(AnnotatableType type, org.eclipse.jdt.internal.compiler.ast.Annotation[] annotations) {
+ int annotationsEnd = 0;
switch(this.ast.apiLevel) {
case AST.JLS2_INTERNAL :
case AST.JLS3_INTERNAL :
@@ -3457,6 +3458,7 @@ class ASTConverter {
if (typeAnnotation != null) {
Annotation annotation = convert(typeAnnotation);
type.annotations().add(annotation);
+ annotationsEnd = annotation.getStartPosition() + annotation.getLength();
}
}
int annotationsStart;
@@ -3466,6 +3468,7 @@ class ASTConverter {
}
type.setSourceRange(start, length);
}
+ return annotationsEnd;
}
private void annotateTypeParameter(TypeParameter typeParameter, org.eclipse.jdt.internal.compiler.ast.Annotation[] annotations) {
switch(this.ast.apiLevel) {
@@ -3718,7 +3721,11 @@ class ASTConverter {
end = simpleName.getStartPosition() + simpleName.getLength() - 1;
qualifiedType.setSourceRange(start, end - start + 1);
if (typeAnnotations != null && (annotations = typeAnnotations[i]) != null) {
- annotateType(qualifiedType, annotations);
+ int nextPosition = annotateType(qualifiedType, annotations);
+ if (simpleName.getStartPosition() < nextPosition && nextPosition <= end) {
+ simpleName.setSourceRange(nextPosition, end - nextPosition + 1);
+ trimWhiteSpacesAndComments(simpleName);
+ }
}
if (this.resolveBindings) {
recordNodes(simpleName, typeReference);
@@ -4442,11 +4449,23 @@ class ASTConverter {
* Remove whitespaces and comments before and after the expression.
*/
private void trimWhiteSpacesAndComments(org.eclipse.jdt.internal.compiler.ast.Expression expression) {
- int start = expression.sourceStart;
- int end = expression.sourceEnd;
+ int[] positions = trimWhiteSpacesAndComments(expression.sourceStart, expression.sourceEnd);
+ expression.sourceStart = positions[0];
+ expression.sourceEnd = positions[1];
+ }
+ private void trimWhiteSpacesAndComments(ASTNode node) {
+ int start = node.getStartPosition();
+ int end = start + node.getLength() - 1;
+ int[] positions = trimWhiteSpacesAndComments(start, end);
+ start = positions[0];
+ end = positions[1];
+ node.setSourceRange(start, end - start + 1);
+ }
+ private int [] trimWhiteSpacesAndComments(int start, int end) {
+ int [] positions = new int[]{start, end};
int token;
- int trimLeftPosition = expression.sourceStart;
- int trimRightPosition = expression.sourceEnd;
+ int trimLeftPosition = start;
+ int trimRightPosition = end;
boolean first = true;
Scanner removeBlankScanner = this.ast.scanner;
try {
@@ -4468,9 +4487,9 @@ class ASTConverter {
}
break;
case TerminalTokens.TokenNameEOF :
- expression.sourceStart = trimLeftPosition;
- expression.sourceEnd = trimRightPosition;
- return;
+ positions[0] = trimLeftPosition;
+ positions[1] = trimRightPosition;
+ return positions;
default :
/*
* if we find something else than a whitespace or a comment,
@@ -4484,6 +4503,7 @@ class ASTConverter {
} catch (InvalidInputException e){
// ignore
}
+ return positions;
}
/**

Back to the top