Fix for Bug 316904 - [assist] completion for ctor with declared lifting causes CCE
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
index d821da7..033437d 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/ast/JavadocArgumentExpression.java
@@ -14,6 +14,7 @@
import org.eclipse.jdt.internal.compiler.classfmt.ClassFileConstants;
import org.eclipse.jdt.internal.compiler.impl.Constant;
import org.eclipse.jdt.internal.compiler.lookup.*;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.LiftingTypeReference;
public class JavadocArgumentExpression extends Expression {
public char[] token;
@@ -41,6 +42,10 @@
if (typeRef != null) {
this.resolvedType = typeRef.getTypeBinding(scope);
typeRef.resolvedType = this.resolvedType;
+//{ObjectTeams: unpack lifting type:
+ if (typeRef instanceof LiftingTypeReference)
+ typeRef = ((LiftingTypeReference)typeRef).baseReference;
+// SH}
// see https://bugs.eclipse.org/bugs/show_bug.cgi?id=195374
// reproduce javadoc 1.3.1 / 1.4.2 behavior
if (typeRef instanceof SingleTypeReference &&
diff --git a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
index ba5c38b..4e5b70c 100644
--- a/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
+++ b/org.eclipse.jdt.core/search/org/eclipse/jdt/internal/core/search/BasicSearchEngine.java
@@ -33,6 +33,7 @@
import org.eclipse.jdt.internal.core.search.matching.*;
import org.eclipse.jdt.internal.core.util.Messages;
import org.eclipse.jdt.internal.core.util.Util;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.LiftingTypeReference;
/**
* Search basic engine. Public search engine (see {@link org.eclipse.jdt.core.search.SearchEngine}
@@ -783,6 +784,10 @@
parameterNames[l] = argument.name;
if (argument.type instanceof SingleTypeReference) {
parameterTypes[l] = ((SingleTypeReference)argument.type).token;
+//{ObjectTeams: one more kind of type reference: (note that TypeAnchorReference cannot occur as an argument type)
+ } else if (argument.type instanceof LiftingTypeReference) {
+ parameterTypes[l] = CharOperation.concatWith(((LiftingTypeReference)argument.type).baseTokens, '.');
+// SH}
} else {
parameterTypes[l] = CharOperation.concatWith(((QualifiedTypeReference)argument.type).tokens, '.');
}