diff options
author | Stephan Herrmann | 2015-05-02 21:34:40 +0000 |
---|---|---|
committer | Stephan Herrmann | 2015-05-02 21:34:40 +0000 |
commit | 7c359de5c6bcea0f7ebdae693bb52fc42ae4a10d (patch) | |
tree | 1e8ec0d04cdcb540f422a7e18f68ef24b283c86c | |
parent | 662942655dd5f342abe552469c2f87b335ea2754 (diff) | |
download | org.eclipse.objectteams-7c359de5c6bcea0f7ebdae693bb52fc42ae4a10d.tar.gz org.eclipse.objectteams-7c359de5c6bcea0f7ebdae693bb52fc42ae4a10d.tar.xz org.eclipse.objectteams-7c359de5c6bcea0f7ebdae693bb52fc42ae4a10d.zip |
Bug 466201 - Reconciler doesn't find methods of OTTypeHierarchies
-rw-r--r-- | org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java | 17 | ||||
-rw-r--r-- | org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java | 23 |
2 files changed, 40 insertions, 0 deletions
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java index 590013109..e4f3befa0 100644 --- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java +++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Parser.java @@ -1016,6 +1016,23 @@ public Parser(ProblemReporter problemReporter, boolean optimizeStringLiterals) { // javadoc support this.javadocParser = createJavadocParser(); } +//{ObjectTeams: variant that may enable OT/J: +public static Parser create(ProblemReporter problemReporter, boolean optimizeStringLiterals, boolean enableOTJ) { + CompilerOptions options = problemReporter.options; + boolean pureJava = options.isPureJava; + boolean scopeKWs = options.allowScopedKeywords; + try { + if (enableOTJ) { + options.isPureJava = false; + options.allowScopedKeywords = true; + } + return new Parser(problemReporter, optimizeStringLiterals); + } finally { + options.isPureJava = pureJava; + options.allowScopedKeywords = scopeKWs; + } +} +// SH} protected void annotationRecoveryCheckPoint(int start, int end) { if(this.lastCheckPoint < end) { this.lastCheckPoint = end + 1; diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java index 7468c60c2..c46660d58 100644 --- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java +++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/compiler/parser/SourceTypeConverter.java @@ -28,14 +28,17 @@ package org.eclipse.jdt.internal.compiler.parser; * */ +import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IAnnotatable; import org.eclipse.jdt.core.IAnnotation; import org.eclipse.jdt.core.IImportDeclaration; import org.eclipse.jdt.core.IJavaElement; +import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.ILocalVariable; import org.eclipse.jdt.core.IPackageDeclaration; import org.eclipse.jdt.core.ISourceRange; +import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.core.Signature; import org.eclipse.jdt.core.compiler.CharOperation; @@ -125,6 +128,14 @@ public class SourceTypeConverter extends TypeConverter { SourceTypeElementInfo topLevelTypeInfo = (SourceTypeElementInfo) sourceTypes[0]; org.eclipse.jdt.core.ICompilationUnit cuHandle = topLevelTypeInfo.getHandle().getCompilationUnit(); this.cu = (ICompilationUnit) cuHandle; +//{ObjectTeams: does the target project require OT/J? + boolean isOTJ = false; + try { + IJavaProject jProj = cuHandle.getJavaProject(); + if (jProj != null) + isOTJ = jProj.getProject().hasNature(JavaCore.OTJ_NATURE_ID); + } catch (CoreException e) { /* ignore */ } +// SH} final CompilationUnitElementInfo compilationUnitElementInfo = (CompilationUnitElementInfo) ((JavaElement) this.cu).getElementInfo(); if (this.has1_5Compliance && @@ -134,9 +145,16 @@ public class SourceTypeConverter extends TypeConverter { // the client wants local and anonymous types to be converted (https://bugs.eclipse.org/bugs/show_bug.cgi?id=254738) // Also see bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=405843 if ((this.flags & LOCAL_TYPE) == 0) { +//{ObjectTeams: pass down OT/J flag: +/* orig: return new Parser(this.problemReporter, true).dietParse(this.cu, compilationResult); } else { return new Parser(this.problemReporter, true).parse(this.cu, compilationResult); + :giro */ + return Parser.create(this.problemReporter, true, isOTJ).dietParse(this.cu, compilationResult); + } else { + return Parser.create(this.problemReporter, true, isOTJ).parse(this.cu, compilationResult); +// SH} } } @@ -202,7 +220,12 @@ public class SourceTypeConverter extends TypeConverter { // SH} return this.unit; } catch (AnonymousMemberFound e) { +//{ObjectTeams: pass down OT/J flag: +/* orig: return new Parser(this.problemReporter, true).parse(this.cu, compilationResult); + :giro */ + return Parser.create(this.problemReporter, true, isOTJ).parse(this.cu, compilationResult); +// SH} } } |