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;