Bug 577270 - Disambiguation for '->' fails with latest changes from JDT
- refactoring to decouple token constants from own flags
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
index 7206e92..32ee910 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/CompletionEngine.java
@@ -7445,7 +7445,9 @@
//{ObjectTeams: mark callout-to-field in flags as needed by the CompletionAdaptor:
if ( kind == CompletionProposal.OT_CALLOUT_GET
|| kind == CompletionProposal.OT_CALLOUT_SET)
- proposal.setAdditionalFlags(isOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT); // pass down for label computation: callout
+ proposal.setAdditionalFlags(isOverride
+ ? AbstractMethodMappingDeclaration.BindingOutOverride
+ : AbstractMethodMappingDeclaration.BindingDirectionOut); // pass down for label computation: callout
// SH}
proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
proposal.setTokenRange(this.tokenStart - this.offset, this.tokenEnd - this.offset);
@@ -9689,9 +9691,9 @@
//{ObjectTeams: callout?
switch (curKind) {
case CompletionProposal.OT_CALLOUT_OVERRIDE_DECLARATION:
- proposal.setAdditionalFlags(TerminalTokens.TokenNameCALLOUT_OVERRIDE); break;
+ proposal.setAdditionalFlags(AbstractMethodMappingDeclaration.BindingOutOverride); break;
case CompletionProposal.OT_CALLOUT_DECLARATION:
- proposal.setAdditionalFlags(TerminalTokens.TokenNameBINDOUT); break;
+ proposal.setAdditionalFlags(AbstractMethodMappingDeclaration.BindingDirectionOut); break;
}
// SH}
proposal.setReplaceRange(this.startPosition - this.offset, this.endPosition - this.offset);
@@ -10066,7 +10068,9 @@
proposal.setAdditionalFlags(((CallinMappingDeclaration)this.currentMethodMapping).callinModifier); // pass down for label computation.
} else {
boolean isOverride = ((CalloutMappingDeclaration)this.currentMethodMapping).isCalloutOverride();
- proposal.setAdditionalFlags(isOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT); // pass down for label computation: callout
+ proposal.setAdditionalFlags(isOverride
+ ? AbstractMethodMappingDeclaration.BindingOutOverride
+ : AbstractMethodMappingDeclaration.BindingDirectionOut); // pass down for label computation: callout
}
}
// SH}
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 fc21481..737738c 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
@@ -299,7 +299,7 @@
return this._bindoutLookahead.getNextToken();
}
this._calloutSeen = true;
- return TokenNameSYNTHBINDOUT;
+ return TokenNameBINDOUT;
}
return TokenNameARROW;
}
diff --git a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
index 7a44312..a69f74c 100644
--- a/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
+++ b/org.eclipse.jdt.core/codeassist/org/eclipse/jdt/internal/codeassist/impl/AssistParser.java
@@ -67,7 +67,6 @@
import org.eclipse.jdt.internal.compiler.parser.RecoveredStatement;
import org.eclipse.jdt.internal.compiler.parser.RecoveredType;
import org.eclipse.jdt.internal.compiler.parser.RecoveredUnit;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
import org.eclipse.objectteams.otdt.core.compiler.OTNameUtils;
@@ -2255,12 +2254,12 @@
long pos= (((long)this.endPosition)<<32) + this.endPosition;
// assume: "expr -> <MISSING>"
char[] ident= "<MISSING>".toCharArray(); //$NON-NLS-1$
- int direction= TerminalTokens.TokenNameBINDOUT;
+ int direction= AbstractMethodMappingDeclaration.BindingDirectionOut;
if (this.identifierLengthPtr > -1 && this.identifierLengthStack[0] == 1) { // unconsumed single identifier at the bottom of the stack?
// it's: "ident <- expr"
pos= this.identifierPositionStack[0]; // don't bother with clearing stacks, parsing aborts right now
ident= this.identifierStack[0];
- direction= TerminalTokens.TokenNameBINDIN;
+ direction= AbstractMethodMappingDeclaration.BindingDirectionIn;
}
pushOnAstStack(new ParameterMapping(direction,
this.expressionStack[this.expressionPtr--],
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 2dd4aaa..3092654 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
@@ -2815,8 +2815,6 @@
// CalloutKind
calloutBinding.calloutKind = this.intStack[this.intPtr--];
calloutBinding.bindingTokenStart = this.intStack[this.intPtr--];
- if (calloutBinding.calloutKind == TokenNameSYNTHBINDOUT) // as opposed to '=>'
- this.intPtr--; // from Scanner.currentPosition for LE.arrowPosition
calloutBinding.modifierEnd = calloutBinding.bindingTokenStart+1; // assume just '->' or '=>', until we find actual callout modifiers (get/set)
// MethodSpec
@@ -2958,12 +2956,12 @@
int offset = 0;
int modifEnd = 0;
// look for "<-" (is the wrong modifier left or right of the "<-" ?)
- boolean isLHS = this.intStack[this.intPtr-3] == TerminalTokens.TokenNameBINDIN;
+ boolean isLHS = this.intStack[this.intPtr-3] == AbstractMethodMappingDeclaration.BindingDirectionIn;
if (isLHS) {
offset = 4; // modifier is below "<-" end start callinModif (LHS)
modifEnd = methodMapping.roleMethodSpec.declarationSourceStart-2;
} else { // "<-" is below modifier (RHS modifier)
- assert this.intStack[this.intPtr-5] == TerminalTokens.TokenNameBINDIN;
+ assert this.intStack[this.intPtr-5] == AbstractMethodMappingDeclaration.BindingDirectionIn;
modifEnd = methodMapping.baseDeclarationSourceStart()-2;
}
int modifStart = this.intStack[this.intPtr-offset];
@@ -4006,7 +4004,7 @@
this.currentElement = this.currentElement.parent;
}
//{ObjectTeams: recover method mapping:
- } else if (this.currentToken == TokenNameSYNTHBINDOUT) {
+ } else if (this.currentToken == TokenNameBINDOUT) {
// TODO(SH): element should have been a callout mapping (missing return type)
// create RecoveredMethodMapping.
// SH}
@@ -7850,7 +7848,7 @@
char[] ident = getIdentifier();
long pos = this.identifierPositionStack[this.identifierPtr--];
int bindingKind = this.intStack[this.intPtr--];
- assert(bindingKind == TerminalTokens.TokenNameBINDIN);
+ assert(bindingKind == AbstractMethodMappingDeclaration.BindingDirectionIn);
this.intPtr--; // start pos of '->' token (unused)
pushOnAstStack(new ParameterMapping(bindingKind, expression, new SingleNameReference(ident, pos)));
@@ -7865,7 +7863,7 @@
char[] ident = getIdentifier();
long pos = this.identifierPositionStack[this.identifierPtr--];
- pushOnAstStack(new ParameterMapping(TerminalTokens.TokenNameBINDOUT, expression, new SingleNameReference(ident, pos)));
+ pushOnAstStack(new ParameterMapping(AbstractMethodMappingDeclaration.BindingDirectionOut, expression, new SingleNameReference(ident, pos)));
}
private void checkMisplacedSemiInParameterMapping() {
if (this.currentToken == TerminalTokens.TokenNameSEMICOLON)
@@ -9149,7 +9147,7 @@
consumeParameterMappingList();
break;
- case 344 : if (DEBUG) { System.out.println("ParameterMapping ::= Expression SYNTHBINDOUT Identifier"); } //$NON-NLS-1$
+ case 344 : if (DEBUG) { System.out.println("ParameterMapping ::= Expression BINDOUT Identifier"); } //$NON-NLS-1$
consumeParameterMappingOut();
break;
@@ -11284,8 +11282,7 @@
protected void consumeLambdaHeader() {
// LambdaHeader ::= LambdaParameters '->' Synthetic/fake production with a synthetic non-terminal. Body not seen yet.
-//{ObjectTeams: two unused ints from consumeToken() (for TokenNameARROW, for use as TokenNameBINDOUT):
- this.intPtr-=2;
+//{ObjectTeams: fix position (see also Commit 1725edbd):
int arrowPosition = this.intStack[this.intPtr--] - 1; // saved during consumeToken()
/*
int arrowPosition = this.scanner.currentPosition - 1;
@@ -12540,11 +12537,8 @@
//System.out.println(this.scanner.toStringAction(type));
switch (type) {
case TokenNameARROW:
-//{ObjectTeams: for alias TokenNameSYNTHBINDOUT
- case TokenNameSYNTHBINDOUT:
+//{ObjectTeams: save arrow position:
pushOnIntStack(this.scanner.currentPosition); // for LE.arrowPosition
- pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
- pushOnIntStack(type);
/* orig: (now called from rule EnterLambda):
if (!this.caseFlagSet && this.scanner.lookBack[0] != TokenNamedefault)
consumeLambdaHeader();
@@ -12611,9 +12605,16 @@
pushOnIntStack(this.scanner.startPosition);
break;
case TokenNameCALLOUT_OVERRIDE :
+ pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
+ pushOnIntStack(AbstractMethodMappingDeclaration.BindingOutOverride);
+ break;
case TokenNameBINDIN:
pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
- pushOnIntStack(type);
+ pushOnIntStack(AbstractMethodMappingDeclaration.BindingDirectionIn);
+ break;
+ case TokenNameBINDOUT:
+ pushOnIntStack(this.scanner.startPosition); // for bindingTokenStart
+ pushOnIntStack(AbstractMethodMappingDeclaration.BindingDirectionOut);
break;
// SH}
case TokenNameabstract :
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
index b3a73d6..f7ffc1f 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/RecoveredMethodMapping.java
@@ -153,7 +153,7 @@
switch (nextToken) {
case TerminalTokens.TokenNameLBRACE: // it's a real method
case TerminalTokens.TokenNameBINDIN: // it's the start of a new callin mapping
- case TerminalTokens.TokenNameSYNTHBINDOUT: // it's the start of a new callout mapping
+ case TerminalTokens.TokenNameBINDOUT: // it's the start of a new callout mapping
// add real method or mapping to the class:
return super.add(methodDeclaration, bracketBalanceValue);
}
@@ -220,7 +220,7 @@
// check whether fieldDeclaration is a misread method spec rather than a real field
switch (parser().currentToken) {
case TerminalTokens.TokenNameBINDIN: // it's the start of a new callin mapping
- case TerminalTokens.TokenNameSYNTHBINDOUT: // it's the start of a new callout mapping
+ case TerminalTokens.TokenNameBINDOUT: // it's the start of a new callout mapping
// ignore misread field:
return this;
}
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 beb8060..69a72ee 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
@@ -130,7 +130,7 @@
/**
* A little state machine for lookahead of up-to 2 tokens.
* This is used to disambiguate whether a '->' inside parameter mappings is
- * an ARROW (lambda) or a SYNTHBINDOUT (parameter mapping role-to-base)
+ * an ARROW (lambda) or a BINDOUT (parameter mapping role-to-base)
*/
protected class BindoutLookahead {
@@ -172,7 +172,7 @@
case TerminalTokens.TokenNameCOMMA : // more mappings?
case TerminalTokens.TokenNameSEMICOLON : // more mappings? (wrong delimiter, though)
case TerminalTokens.TokenNameRBRACE : // end of parameter mappings?
- return TokenNameSYNTHBINDOUT; // match, tweak '->' to mean SYNTHBINDOUT
+ return TokenNameBINDOUT; // match, tweak '->' to mean BINDOUT
default:
return TerminalTokens.TokenNameARROW; // no match, '->' should be interpreted as normal
}
@@ -240,7 +240,7 @@
return baseIsKeyword(false);
case TokenNameas:
case TokenNameBINDIN:
- case TokenNameSYNTHBINDOUT:
+ case TokenNameBINDOUT:
case TokenNamecallin:
case TokenNameplayedBy:
case TokenNameprecedence:
@@ -1796,7 +1796,7 @@
return this._bindoutLookahead.getNextToken();
}
this._calloutSeen = true;
- return TokenNameSYNTHBINDOUT;
+ return TokenNameBINDOUT;
}
return TokenNameARROW;
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
index 050dcae..ce75176 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/parser/TerminalTokens.java
@@ -191,10 +191,7 @@
TokenNameATOT = 128,
TokenNameBINDIN = 81,
TokenNameCALLOUT_OVERRIDE = 97,
- TokenNameSYNTHBINDOUT = 73,
+ TokenNameBINDOUT = 73,
TokenNameEOF = 69,
TokenNameERROR = 154;
-
- // This alias is statically inserted by GenerateParserScript.java:
- int TokenNameBINDOUT = TokenNameARROW;
}
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
index 70b7579..837532b 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/AbstractMethodMappingDeclaration.java
@@ -22,9 +22,6 @@
**********************************************************************/
package org.eclipse.objectteams.otdt.internal.core.compiler.ast;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDIN;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
-
import java.util.Arrays;
import org.eclipse.jdt.core.compiler.CategorizedProblem;
@@ -51,7 +48,6 @@
import org.eclipse.jdt.internal.compiler.lookup.SourceTypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.compiler.parser.Parser;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilationUnit;
import org.eclipse.jdt.internal.compiler.problem.AbortMethod;
@@ -114,6 +110,10 @@
public Javadoc javadoc;
public Annotation[] annotations;
public boolean hasParsedParamMappings= false;
+ // distinction '->' / '=>' / '<-' :
+ public static final int BindingDirectionOut = 1;
+ public static final int BindingOutOverride = 2;
+ public static final int BindingDirectionIn = 3;
public AbstractMethodMappingDeclaration(CompilationResult compilationResult)
{
@@ -376,7 +376,7 @@
continue;
}
}
- if ( !methodSpec.checkBaseReturnType(this.scope, isCallin()?TokenNameBINDOUT:TokenNameBINDIN)
+ if ( !methodSpec.checkBaseReturnType(this.scope, isCallin()?BindingDirectionOut:BindingDirectionIn)
|| !methodSpec.checkParameterTypes(this.scope, true))
continue;
// translation bits are already initialized in the constructor of MethodSpec.
@@ -599,13 +599,13 @@
if (this.mappings != null)
{
for (ParameterMapping mapping : this.mappings)
- if (mapping.direction == TerminalTokens.TokenNameBINDIN) // ident <- expr
+ if (mapping.direction == BindingDirectionIn) // ident <- expr
mapping.expression.traverse(new BaseScopeMarker(), this.scope);
// check 4.4(c) - sentence 2:
if (isCallin() && !isReplaceCallin())
for (ParameterMapping mapping : this.mappings)
- if (mapping.direction == TerminalTokens.TokenNameBINDOUT) // expr -> ident
+ if (mapping.direction == BindingDirectionOut) // expr -> ident
parser.problemReporter().illegalBindingDirectionNonReplaceCallin(mapping);
{ // prepare positions:
@@ -660,7 +660,7 @@
{
Expression mappedArgExpr = null;
Integer basePos = null;
- int bindingDirection= isCallin() ? TerminalTokens.TokenNameBINDIN : TerminalTokens.TokenNameBINDOUT;
+ int bindingDirection= isCallin() ? BindingDirectionIn: BindingDirectionOut;
// look for a mapping:
for (int i=0; i<this.mappings.length; i++)
{
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
index d777cc9..420e775 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CallinMappingDeclaration.java
@@ -22,8 +22,6 @@
**********************************************************************/
package org.eclipse.objectteams.otdt.internal.core.compiler.ast;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDIN;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameafter;
import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamebefore;
import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNamereplace;
@@ -328,7 +326,7 @@
this.roleMethodSpec.parameters[j]= roleParam;
continue;
}
- if (RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, TokenNameBINDIN))
+ if (RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, BindingDirectionIn))
{
this.roleMethodSpec.parameters[j]= roleParam;
compatibilityViaBaseAnchor= true;
@@ -398,7 +396,7 @@
if (!hasReportedError && baseLeaf.isCompatibleWith(roleLeaf)) {
if (isReplaceCallin() && !isTypeVariable) {
boolean twowayCompatible = compatibilityViaBaseAnchor
- ? RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, TokenNameBINDOUT)
+ ? RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseLeaf, roleLeaf, AbstractMethodMappingDeclaration.BindingDirectionOut)
: roleLeaf.isCompatibleWith(baseLeaf);
if (!twowayCompatible) {
// requires two-way compatibility (see additional paragraph in 4.5(d))
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
index d99eed7..0fdda4f 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/CalloutMappingDeclaration.java
@@ -42,8 +42,6 @@
import org.eclipse.objectteams.otdt.internal.core.compiler.util.AstGenerator;
import org.eclipse.objectteams.otdt.internal.core.compiler.util.RoleTypeCreator;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameBINDOUT;
-import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameCALLOUT_OVERRIDE;
import static org.eclipse.jdt.internal.compiler.parser.TerminalTokens.TokenNameget;
@@ -72,9 +70,7 @@
}
public void setCalloutKind(boolean isOverride) {
- this.calloutKind = isOverride ?
- TokenNameCALLOUT_OVERRIDE :
- TokenNameBINDOUT;
+ this.calloutKind = isOverride ? BindingOutOverride : BindingDirectionOut;
}
@@ -126,7 +122,7 @@
}
TypeBinding baseParam = baseParams[j];
if (!roleParam.isCompatibleWith(baseParam)) {
- if (!RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseParam, roleParam, TokenNameBINDOUT))
+ if (!RoleTypeCreator.isCompatibleViaBaseAnchor(this.scope, baseParam, roleParam, AbstractMethodMappingDeclaration.BindingDirectionOut))
{
// try auto(un)boxing:
if (this.scope.isBoxingCompatibleWith(roleParam, baseParam))
@@ -390,7 +386,7 @@
{
printIndent(indent,output);
this.roleMethodSpec.print(0,output);
- if(this.calloutKind==TokenNameCALLOUT_OVERRIDE)
+ if(this.calloutKind==BindingOutOverride)
output.append(" => "); //$NON-NLS-1$
else
output.append(" -> "); //$NON-NLS-1$
@@ -438,7 +434,7 @@
@Override
public boolean isCalloutOverride()
{
- return this.calloutKind==TokenNameCALLOUT_OVERRIDE;
+ return this.calloutKind==BindingOutOverride;
}
public boolean isCalloutToField()
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
index 572d238..562d14d 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/ast/ParameterMapping.java
@@ -31,7 +31,6 @@
import org.eclipse.jdt.internal.compiler.ast.Expression;
import org.eclipse.jdt.internal.compiler.ast.SingleNameReference;
import org.eclipse.jdt.internal.compiler.lookup.BlockScope;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
/**
* NEW for OTDT:
@@ -52,7 +51,7 @@
this.direction=direction;
this.expression=expression;
this.ident=ident;
- if (direction == TerminalTokens.TokenNameBINDIN) {
+ if (direction == AbstractMethodMappingDeclaration.BindingDirectionIn) {
this.sourceStart= ident.sourceStart;
this.sourceEnd= expression.sourceEnd;
} else {
@@ -63,7 +62,7 @@
@Override
public StringBuffer printExpression(int indent, StringBuffer output) {
- if((this.direction==TerminalTokens.TokenNameBINDIN))// == CharOperation.equals(ident, IOTConstants.RESULT))
+ if((this.direction==AbstractMethodMappingDeclaration.BindingDirectionIn))// == CharOperation.equals(ident, IOTConstants.RESULT))
{
output.append(this.ident.token);
output.append(" <- "); //$NON-NLS-1$
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
index 1f601a6..73db33c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementor.java
@@ -125,7 +125,7 @@
{
super(role);
this._roleScope = role.getAst().scope; // we definitely have an AST here
- this.bindingDirection = TerminalTokens.TokenNameBINDIN;
+ this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionIn;
}
/**
* Main entry from Dependencies.
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
index a43938b..3adf20e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CallinImplementorDyn.java
@@ -142,7 +142,7 @@
{
this._role = role;
this._roleScope = role.getAst().scope; // we definitely have an AST here
- this.bindingDirection = TerminalTokens.TokenNameBINDIN;
+ this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionIn;
AbstractMethodMappingDeclaration[] methodMappings = this._role.getAst().callinCallouts;
if(methodMappings == null || methodMappings.length == 0)
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
index 44353dc..507911e 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/CalloutImplementor.java
@@ -57,7 +57,6 @@
import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeConstants;
import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.jdt.internal.compiler.problem.AbortCompilation;
import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
@@ -145,7 +144,7 @@
public CalloutImplementor(RoleModel role)
{
super(role);
- this.bindingDirection = TerminalTokens.TokenNameBINDOUT;
+ this.bindingDirection = AbstractMethodMappingDeclaration.BindingDirectionOut;
}
private boolean transform(boolean needMethodBodies)
@@ -827,7 +826,7 @@
for (int i = 0; i < mappings.length; i++) {
if (CharOperation.equals(mappings[i].ident.token, IOTConstants.RESULT))
{
- if (mappings[i].direction == TerminalTokens.TokenNameBINDOUT)
+ if (mappings[i].direction == AbstractMethodMappingDeclaration.BindingDirectionOut)
{
problemReporter.wrongBindingDirection(
calloutMappingDeclaration, mappings[i]);
@@ -851,7 +850,7 @@
{
if (!mappings[i].isUsedFor(calloutMappingDeclaration.roleMethodSpec))
{
- if (mappings[i].direction == TerminalTokens.TokenNameBINDOUT)
+ if (mappings[i].direction == AbstractMethodMappingDeclaration.BindingDirectionOut)
{
// TODO(SH): can this actually happen? Clover says: YES.
// would have to be an inexistent param ident?
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
index 9d95205..5c4c3c4 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/mappings/MethodMappingImplementor.java
@@ -39,7 +39,6 @@
import org.eclipse.jdt.internal.compiler.lookup.Scope;
import org.eclipse.jdt.internal.compiler.lookup.TypeBinding;
import org.eclipse.jdt.internal.compiler.lookup.TypeVariableBinding;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.CallinMappingDeclaration;
@@ -286,13 +285,13 @@
pos = (((long)argument.sourceStart) << 32) + argument.sourceEnd;
argModifiers = argument.modifiers;
// for callout prefer source-level args (from method spec) to avoid resolved/unresolved conflicts downstream
- if (this.bindingDirection == TerminalTokens.TokenNameBINDOUT)
+ if (this.bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionOut)
argTypeReference = AstClone.copyTypeReference(argument.type);
} else {
argName = (IOTConstants.OT_DOLLAR_ARG + idx).toCharArray();
}
TypeBinding argType = arguments[idx];
- if (this.bindingDirection == TerminalTokens.TokenNameBINDIN) { // only relevant for callin
+ if (this.bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionIn) { // only relevant for callin
argTypeReference = getAnchoredTypeReference(gen, baseSideAnchor, argType);
}
if (argTypeReference == null) {
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
index 9d03b3a..39dfe7c 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/statemachine/transformer/ReplaceResultReferenceVisitor.java
@@ -71,7 +71,7 @@
{
boolean isResultDir = false;
if (this._methodMapping.isCallin()) {
- isResultDir = this._bindingDirection == TerminalTokens.TokenNameBINDOUT;
+ isResultDir = this._bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionOut;
if ( !isResultDir
&& ((CallinMappingDeclaration)this._methodMapping).callinModifier
== TerminalTokens.TokenNameafter)
@@ -79,7 +79,7 @@
isResultDir = true;
}
} else
- isResultDir = this._bindingDirection == TerminalTokens.TokenNameBINDIN;
+ isResultDir = this._bindingDirection == AbstractMethodMappingDeclaration.BindingDirectionIn;
if (isResultDir) {
AstGenerator gen = new AstGenerator(ref.sourceStart, ref.sourceEnd);
ResultReference resultRef = gen.resultReference(ref, this._methodMapping);
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
index ba65081..5d54580 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/objectteams/otdt/internal/core/compiler/util/RoleTypeCreator.java
@@ -33,10 +33,10 @@
import org.eclipse.jdt.internal.compiler.impl.ReferenceContext;
import org.eclipse.jdt.internal.compiler.impl.CompilerOptions.WeavingScheme;
import org.eclipse.jdt.internal.compiler.lookup.*;
-import org.eclipse.jdt.internal.compiler.parser.TerminalTokens;
import org.eclipse.jdt.internal.compiler.problem.ProblemReporter;
import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
import org.eclipse.objectteams.otdt.core.exceptions.InternalCompilerError;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.PotentialLowerExpression;
import org.eclipse.objectteams.otdt.internal.core.compiler.ast.TypeAnchorReference;
import org.eclipse.objectteams.otdt.internal.core.compiler.control.Dependencies;
@@ -1620,7 +1620,7 @@
if (baseType instanceof ReferenceBinding) {
TypeBinding baseAnchoredBase = maybeInstantiateFromPlayedBy(
scope, (ReferenceBinding)baseType);
- if (bindDir == TerminalTokens.TokenNameBINDIN) {
+ if (bindDir == AbstractMethodMappingDeclaration.BindingDirectionIn) {
if (baseAnchoredBase.isCompatibleWith(roleType))
return true;
} else {
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 5164ab9..bbad1ce 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
@@ -18,6 +18,9 @@
package org.eclipse.jdt.core.dom;
+import static org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration.BindingDirectionIn;
+import static org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration.BindingDirectionOut;
+
import java.util.Arrays;
import java.util.ArrayList;
import java.util.Comparator;
@@ -6100,7 +6103,7 @@
int token;
while ((token = this.scanner.getNextToken()) != TerminalTokens.TokenNameEOF) {
switch(token) {
- case TerminalTokens.TokenNameBINDIN://225
+ case TerminalTokens.TokenNameBINDIN:
return this.scanner.startPosition;
}
}
@@ -7613,10 +7616,10 @@
result.setExpression(convert(parameterMapping.expression));
- if (parameterMapping.direction == TerminalTokens.TokenNameBINDIN)
+ if (parameterMapping.direction == BindingDirectionIn)
result.setDirection("<-");
- if (parameterMapping.direction == TerminalTokens.TokenNameBINDOUT)
+ if (parameterMapping.direction == BindingDirectionOut)
result.setDirection("->");
result.setIdentifier(convert(parameterMapping.ident));
diff --git a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
index e8465a0..2577755 100644
--- a/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
+++ b/org.eclipse.jdt.core/dom/org/eclipse/jdt/internal/core/dom/rewrite/ASTRewriteAnalyzer.java
@@ -5008,7 +5008,7 @@
MethodBindingOperator bindingOp = node.bindingOperator();
int oldBindingKind= ((Integer) getOriginalValue(bindingOp, MethodBindingOperator.BINDING_KIND_PROPERTY)).intValue();
boolean isCalloutOverride = (oldBindingKind == MethodBindingOperator.KIND_CALLOUT_OVERRIDE);
- int typeToken= isCalloutOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameSYNTHBINDOUT;
+ int typeToken= isCalloutOverride ? TerminalTokens.TokenNameCALLOUT_OVERRIDE : TerminalTokens.TokenNameBINDOUT;
try {
getScanner().readToToken(typeToken, node.getStartPosition());
} catch (CoreException e) {
diff --git a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
index aed39a8..36d8172 100644
--- a/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
+++ b/org.eclipse.jdt.core/formatter/org/eclipse/jdt/internal/formatter/SpacePreparator.java
@@ -1108,7 +1108,7 @@
}
@Override
public boolean visit(CalloutMappingDeclaration node) {
- handleTokenAfter(node.getRoleMappingElement(), node.isCalloutOverride() ? TokenNameCALLOUT_OVERRIDE : TokenNameSYNTHBINDOUT, true, true);
+ handleTokenAfter(node.getRoleMappingElement(), node.isCalloutOverride() ? TokenNameCALLOUT_OVERRIDE : TokenNameBINDOUT, true, true);
if (node.hasParameterMapping())
handleTokenAfter(node.getBaseMappingElement(), TokenNamewith, true, true);
return true;
@@ -1137,7 +1137,7 @@
if (node.isBindIN())
handleTokenAfter(node.getIdentifier(), TokenNameBINDIN, true, true);
else
- handleTokenBefore(node.getIdentifier(), TokenNameSYNTHBINDOUT, true, true);
+ handleTokenBefore(node.getIdentifier(), TokenNameBINDOUT, true, true);
return true;
}
@Override
diff --git a/org.eclipse.jdt.core/grammar/java.g b/org.eclipse.jdt.core/grammar/java.g
index e5b2a18..f66b9e7 100644
--- a/org.eclipse.jdt.core/grammar/java.g
+++ b/org.eclipse.jdt.core/grammar/java.g
@@ -136,7 +136,7 @@
ATOT
BINDIN
CALLOUT_OVERRIDE
- SYNTHBINDOUT
+ BINDOUT
-- Markus Witte}
-- BodyMarker
@@ -1156,7 +1156,7 @@
/.$putCase consumeCalloutParameterMappingsInvalid(); $break ./
-- SYMBOLS:
-CalloutKind -> SYNTHBINDOUT
+CalloutKind -> BINDOUT
CalloutKind -> '=>'
/:$readableName CalloutKind:/
@@ -1198,7 +1198,7 @@
/:$readableName CalloutParameterMappingList:/
-ParameterMapping ::= Expression SYNTHBINDOUT 'Identifier'
+ParameterMapping ::= Expression BINDOUT 'Identifier'
/.$putCase consumeParameterMappingOut(); $break ./
ParameterMapping ::= 'Identifier' '<-' ForceBaseIsIdentifier Expression RestoreBaseKeyword
@@ -3852,7 +3852,7 @@
ATOT ::= '@'
BINDIN ::= '<-'
CALLOUT_OVERRIDE ::= '=>'
-SYNTHBINDOUT ::= '->'
+BINDOUT ::= '->'
-- Markus Witte}
$end
diff --git a/org.eclipse.jdt.core/scripts/GenerateParserScript.java b/org.eclipse.jdt.core/scripts/GenerateParserScript.java
index 495319a..8089bf8 100644
--- a/org.eclipse.jdt.core/scripts/GenerateParserScript.java
+++ b/org.eclipse.jdt.core/scripts/GenerateParserScript.java
@@ -83,13 +83,6 @@
javasymText = javasymText.replace("TokenName$eof", "TokenNameEOF");
javasymText = javasymText.replace("TokenName$error", "TokenNameERROR");
javasymText = javasymText.replace("TokenNamenon-sealed", "TokenNamenon_sealed");
-//{ObjectTeams:
- javasymText = javasymText.replace("}",
- "\n" +
- " // This alias is statically inserted by GenerateParserScript.java:\n" +
- " int TokenNameBINDOUT = TokenNameARROW;\n" +
- "}");
-// SH}
Files.write(terminalTokensFile.toPath(), (terminalTokensProlog + "\tint " + javasymText).getBytes());
}
diff --git a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
index c62f65f..3b966b0 100644
--- a/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
+++ b/plugins/org.eclipse.objectteams.otdt.jdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/assist/CompletionAdaptor.java
@@ -82,6 +82,7 @@
import org.eclipse.objectteams.otdt.core.IRoleType;
import org.eclipse.objectteams.otdt.core.OTModelManager;
import org.eclipse.objectteams.otdt.core.compiler.IOTConstants;
+import org.eclipse.objectteams.otdt.internal.core.compiler.ast.AbstractMethodMappingDeclaration;
import org.eclipse.objectteams.otdt.ui.ImageConstants;
import org.eclipse.objectteams.otdt.ui.ImageManager;
import org.eclipse.osgi.util.NLS;
@@ -221,10 +222,10 @@
boolean isCallin= true;
boolean isOverride= false;
switch(bindingModifier) {
- case TerminalTokens.TokenNameCALLOUT_OVERRIDE:
+ case AbstractMethodMappingDeclaration.BindingOutOverride:
isOverride= true;
//$FALL-THROUGH$
- case TerminalTokens.TokenNameBINDOUT:
+ case AbstractMethodMappingDeclaration.BindingDirectionOut:
isCallin= false;
break;
// otherwise it's a callin with details in bindingModifier
@@ -281,7 +282,7 @@
LabelProvider labelProvider= getLabelProvider();
//{ObjectTeams: callout-to-field:
StyledString label= labelProvider.createFieldDescLabel(proposal);
- Image image= getImage(labelProvider.createMappingImageDescriptor(TerminalTokens.TokenNameBINDOUT));
+ Image image= getImage(labelProvider.createMappingImageDescriptor(AbstractMethodMappingDeclaration.BindingDirectionOut));
// SH}
int relevance= computeRelevance(proposal);
@@ -326,8 +327,8 @@
return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLINBINDING_REPLACE_IMG);
case TerminalTokens.TokenNameafter:
return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLINBINDING_AFTER_IMG);
- case TerminalTokens.TokenNameBINDOUT:
- case TerminalTokens.TokenNameCALLOUT_OVERRIDE:
+ case AbstractMethodMappingDeclaration.BindingDirectionOut:
+ case AbstractMethodMappingDeclaration.BindingOutOverride:
return ImageManager.getSharedInstance().getDescriptor(ImageConstants.CALLOUTBINDING_IMG);
default:
return null;