Bug 384992 - [java8] adopt grammar changes for Java 8 from JDT/Core
Apply trick from 926e118b9f88368008751435f49479ab340934da re '->' also
in CompletionScanner.
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
index a48a96d..0952659 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/complete/CompletionScanner.java
@@ -242,6 +242,9 @@
return TokenNameDOT;
}
} else {
+//{ObjectTeams: record the one '.':
+ this._dotSeen = 2; // now
+// SH}
this.currentPosition = temp;
return TokenNameDOT;
}
@@ -267,8 +270,13 @@
return TokenNameARROW;
:giro */
if (getNextChar('>')) {
- if (this._isOTSource)
- this._calloutSeen = true;
+ if (this._isOTSource) {
+ this._calloutSeen = true; // TODO distinguish from ARROW?
+ if (this._insideParameterMapping) {
+ this._bindoutLookahead = new BindoutLookahead();
+ return this._bindoutLookahead.getNextToken();
+ }
+ }
return TokenNameARROW;
}
// Markus Witte}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
index 8743de4..fa4c9b8 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/Scanner.java
@@ -105,16 +105,16 @@
public boolean _precedenceSeen = false;
// after a '.' even 'team' can be an identifier:
- private int _dotSeen = 0; // 0: no, 1: previos, 2: this token
+ protected int _dotSeen = 0; // 0: no, 1: previos, 2: this token
public boolean _insideParameterMapping = false;
enum LookaheadState { INIT, ONE_TOKEN, ID_SEEN, TWO_TOKENS, ID_CONSUMED }
/**
* A little state machine for lookahead of up-to 2 tokens.
* This is used to disambiguate whether a '->' inside parameter mappings is
- * an ARRAW (lambda) or a SYNTHBINDOUT (parameter mapping role-to-base)
+ * an ARROW (lambda) or a SYNTHBINDOUT (parameter mapping role-to-base)
*/
- class BindoutLookahead {
+ protected class BindoutLookahead {
LookaheadState state = LookaheadState.INIT;
int[] tokens = new int[2];
@@ -175,7 +175,7 @@
return this.tokens[i];
}
}
- BindoutLookahead _bindoutLookahead = null;
+ protected BindoutLookahead _bindoutLookahead = null;
public void resetOTFlags() {
this._isOTSource = this.parseOTJonly;