[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[List Home]
|
Re: [jdt-core-dev] TypeReferences vs NameReferences in type cast expressions.
|
- From: Stephan Herrmann <stephan@xxxxxxxxxxxxxxx>
- Date: Thu, 15 Oct 2009 14:28:46 +0200
- Delivered-to: jdt-core-dev@eclipse.org
- User-agent: KMail/1.11.2 (Linux/2.6.28-15-generic; KDE/4.2.2; i686; ; )
Hi Srikanth,
I've been wondering about the same bits before.
A look into the history shows that before 22/10/03 the grammar actually
had this rule (dead file java_1.5.g):
-- Expression is here only in order to make the grammar LL1
CastExpression ::= PushLPAREN Expression PushRPAREN UnaryExpressionNotPlusMinus
/.$putCase consumeCastExpressionLL1(); $break ./
It could be that everything else is a left-over from those days?
Interestingly there are no changes in Parser.java that directly correspond
to the 22/10/03 commit of java_1.5.g.
Also related are these bits from CastExpression:
a comment in resolveType:
// due to the fact an expression may start with ( and that a cast can also start with (
// the field is an expression....it can be a TypeReference OR a NameReference Or
// any kind of Expression <-- this last one is invalid.......
and the last branch
} else { // expression as a cast
TypeBinding expressionType = this.expression.resolveType(scope);
if (expressionType == null) return null;
scope.problemReporter().invalidTypeReference(this.type);
return null;
}
> I will make the change to TypeReference and see what breaks,
sounds like a good strategy. Alternatively one could just try hard
to trigger the above else branch.
If your observations are right, this could make the code simpler.
best,
Stephan