Details
-
Type:
Improvement
-
Status:
Resolved
-
Priority:
Major
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: None
-
Component/s: None
-
Labels:None
-
Environment:java 1.4, janino 2.5.6
-
Number of attachments :
Description
Classes with construct:
super.member = ...
fail to load. For example:
java --classpath janino.jar org.codehaus.janino.samples.ClassBodyDemo @/udd/share/ws/sample/src/Two.java
Exception in thread "main" org.codehaus.janino.Parser$ParseException: Line 5, Column 20: Superclass field access NYI
at org.codehaus.janino.Parser.throwParseException(Parser.java)
at org.codehaus.janino.Parser.parsePrimary(Parser.java)
at org.codehaus.janino.Parser.parseUnaryExpression(Parser.java)
at org.codehaus.janino.Parser.parseMultiplicativeExpression(Parser.java)
at org.codehaus.janino.Parser.parseAdditiveExpression(Parser.java)
at org.codehaus.janino.Parser.parseShiftExpression(Parser.java)
at org.codehaus.janino.Parser.parseRelationalExpression(Parser.java)
at org.codehaus.janino.Parser.parseEqualityExpression(Parser.java)
at org.codehaus.janino.Parser.parseAndExpression(Parser.java)
at org.codehaus.janino.Parser.parseExclusiveOrExpression(Parser.java)
at org.codehaus.janino.Parser.parseInclusiveOrExpression(Parser.java)
at org.codehaus.janino.Parser.parseConditionalAndExpression(Parser.java)
at org.codehaus.janino.Parser.parseConditionalOrExpression(Parser.java)
at org.codehaus.janino.Parser.parseConditionalExpression(Parser.java)
at org.codehaus.janino.Parser.parseAssignmentExpression(Parser.java)
at org.codehaus.janino.Parser.parseExpression(Parser.java)
at org.codehaus.janino.Parser.parseConstructorDeclarator(Parser.java)
at org.codehaus.janino.Parser.parseClassBodyDeclaration(Parser.java)
at org.codehaus.janino.Parser.parseClassBody(Parser.java)
at org.codehaus.janino.Parser.parseClassDeclarationRest(Parser.java)
at org.codehaus.janino.Parser.parseClassBodyDeclaration(Parser.java)
at org.codehaus.janino.ClassBodyEvaluator.cook(ClassBodyEvaluator.java)
at org.codehaus.janino.Cookable.cook(Cookable.java)
at org.codehaus.janino.Cookable.cook(Cookable.java)
at org.codehaus.janino.Cookable.cook(Cookable.java)
at org.codehaus.janino.ClassBodyEvaluator.<init>(ClassBodyEvaluator.java)
at org.codehaus.janino.samples.ClassBodyDemo.main(ClassBodyDemo.java)
with class Two:
public class Two extends One {
Two() {
super.name = "Two";
}
public void doit() {
System.out.println("Two.doit");
}
}
and class One:
public class One {
protected String name = new String();
public One() { this.name = "One"; }
public void doit() {
System.out.println("One.doit");
}
}
class One, of course loads nicely. Class Two fails, all though super class member access is listed as suported.
It's not a bug, it's a feature!
"Superclass field access NYI" means "not yet implemented", so it's a documented non-feature
Joking aside, I will try to implement the missing feature soon. How urgent is it?
CU
Arno