[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.

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