Compiler error during custom generator build

7 views
Skip to first unread message

CVdS

unread,
May 7, 2008, 10:20:40 AM5/7/08
to Google Web Toolkit
I found something that looks like a bug in the 1.4.62 compilation
(also present in 1.4.60):

When compiling the generated code, the following error appears _after_
the
generator is executed:

Analyzing permutation #1
Rebinding
com.stanjames.login.client.messages.LoginModuleMessages
Invoking <generate-with
class='com.signtechno.widgets.rebind.i18n.ClientLocaleTranslatorGenerator'/
>

[ERROR] An internal compiler exception occurred
com.google.gwt.dev.jjs.InternalCompilerException: Unexpected error
during
visit.
at
com.google.gwt.dev.jjs.ast.JVisitor.translateException(JVisitor.java:
538)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:529)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
198)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:65)
at
com.google.gwt.dev.jjs.ast.JCastOperation.traverse(JCastOperation.java:
57)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
198)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:65)
at
com.google.gwt.dev.jjs.ast.JLocalDeclarationStatement.traverse(JLocalDeclarationStatement.java:
47)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$ListContext.traverse(JModVisitor.java:106)
at
com.google.gwt.dev.jjs.ast.JModVisitor.doAcceptWithInsertRemove(JModVisitor.java:
218)
at
com.google.gwt.dev.jjs.ast.JVisitor.acceptWithInsertRemove(JVisitor.java:
81)
at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:36)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
198)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:73)
at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:
47)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
198)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:69)
at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:144)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$ListContext.traverse(JModVisitor.java:106)
at
com.google.gwt.dev.jjs.ast.JModVisitor.doAcceptWithInsertRemove(JModVisitor.java:
218)
at
com.google.gwt.dev.jjs.ast.JVisitor.acceptWithInsertRemove(JVisitor.java:
81)
at com.google.gwt.dev.jjs.ast.JClassType.traverse(JClassType.java:50)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
208)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:77)
at com.google.gwt.dev.jjs.ast.JProgram.traverse(JProgram.java:699)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
at
com.google.gwt.dev.jjs.ast.JModVisitor
$NodeContext.traverse(JModVisitor.java:160)
at com.google.gwt.dev.jjs.ast.JModVisitor.doAccept(JModVisitor.java:
198)
at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:69)
at
com.google.gwt.dev.jjs.impl.ReplaceRebinds.execImpl(ReplaceRebinds.java:
82)
at
com.google.gwt.dev.jjs.impl.ReplaceRebinds.exec(ReplaceRebinds.java:
71)
at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.compile(JavaToJavaScriptCompiler.java:
325)
at com.google.gwt.dev.GWTCompiler.realizePermutation(GWTCompiler.java:
688)
at
com.google.gwt.dev.GWTCompiler.compilePermutations(GWTCompiler.java:
411)
at com.google.gwt.dev.GWTCompiler.distill(GWTCompiler.java:335)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:755)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:745)
at com.google.gwt.dev.GWTCompiler.main(GWTCompiler.java:213)
Caused by: java.lang.NullPointerException
at
com.google.gwt.dev.jjs.impl.ReplaceRebinds
$RebindVisitor.endVisit(ReplaceRebinds.java:51)
at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:
116)
at com.google.gwt.dev.jjs.ast.JVisitor.doTraverse(JVisitor.java:527)
... 47 more
[ERROR] at Login.java(33):
GWT.create(LoginModuleMessages.class)
com.google.gwt.dev.jjs.ast.JMethodCall
[ERROR] at Login.java(33): (LoginModuleMessages)
GWT.create(LoginModuleMessages.class)
com.google.gwt.dev.jjs.ast.JCastOperation
[ERROR] at Login.java(33): final LoginModuleMessages messages
=
(LoginModuleMessages) GWT.create(LoginModuleMessages.class)
com.google.gwt.dev.jjs.ast.JLocalDeclarationStatement
[ERROR] at Login.java(30): {
final LoginModuleMessages messages = (LoginModuleMessages)
GWT.create(LoginModuleMessages.class);
final TextBox uid;
final PasswordTextBox pw;
final RootPanel rootPanel = RootPanel.get();
final HorizontalPanel horizontal = (new
HorizontalPanel()).HorizontalPanel();
rootPanel.add(horizontal);
final Grid grid = (new Grid()).Grid(3, 2);
horizontal.add(grid);
grid.setWidget(0, 0, (new
Label()).Label(messages.getTranslation("User
ID")));
grid.setWidget(0, 1, uid = (new TextBox()).TextBox());
grid.setWidget(1, 0, (new
Label()).Label(messages.getTranslation("Password")));
grid.setWidget(1, 1, pw = (new
PasswordTextBox()).PasswordTextBox());
this.clickMeButton = (new Button()).Button();
rootPanel.add(this.clickMeButton);
this.clickMeButton.setText(messages.getTranslation("Verify"));
this.clickMeButton.addClickListener((new Login$1()).Login$1(this,
uid, pw));
grid.setWidget(2, 1, this.clickMeButton);
final LanguageRedirectorListBox list = (new
LanguageRedirectorListBox()).LanguageRedirectorListBox(messages);
horizontal.add(list);
}
com.google.gwt.dev.jjs.ast.JBlock
[ERROR] at Login.java(30): {
}
com.google.gwt.dev.jjs.ast.JMethodBody
[ERROR] at Login.java(30): public void onModuleLoad() {
}
com.google.gwt.dev.jjs.ast.JMethod
[ERROR] at Login.java(26): class Login extends Object
implements
EntryPoint
com.google.gwt.dev.jjs.ast.JClassType
[ERROR] <no source info>: <JProgram>
com.google.gwt.dev.jjs.ast.JProgram

The last bit of generated code looks like this:

public String getCurrentLocale(){
return "default";
}

private java.util.Map localeNameMap = null;

public java.util.Map getLocaleNameMap(){
if(localeNameMap == null){
localeNameMap = new java.util.HashMap();
localeNameMap.put("en","English");
localeNameMap.put("fr","French - Fran\u00E7ais");
localeNameMap.put("ar","Arabic -
\u0627\u0644\u0639\u0631\u0628\u064A\u0629");
localeNameMap.put("ru","Russian -
\u0420\u0443\u0441\u0441\u043A\u0438\u0439");
}
return localeNameMap;
}

public String getLocaleName(String key){
if(localeNameMap == null){
getLocaleNameMap();
}
return (String)localeNameMap.get(key);
}

public String[] getAvailableLocales(){
return new String[]{"en","ar","fr","ru"};
}

private java.util.Map translationMap = null;

public java.util.Map getTranslationMap(){
if(translationMap == null){
translationMap = new java.util.HashMap();
translationMap.put("Password","Password");
translationMap.put("English","English");
translationMap.put("Arabic -
\u0627\u0644\u0639\u0631\u0628\u064A\u0629","Arabic -
\u0627\u0644\u0639\u0631\u0628\u064A\u0629");
translationMap.put("Verify","Verify");
translationMap.put("User ID","User ID");
translationMap.put("Russian -
\u0420\u0443\u0441\u0441\u043A\u0438\u0439","Russian -
\u0420\u0443\u0441\u0441\u043A\u0438\u0439");
translationMap.put("French - Fran\u00E7ais","French - Fran
\u00E7ais");
}
return translationMap;
}

public String getTranslation(String key){
if(translationMap == null){
getTranslationMap();
}
return (String)translationMap.get(key);
}

Note that the generator works fine and returns a consistent value that
is
perfectly usable when executing GWT unit tests in the hosting mode.

batosai

unread,
May 19, 2008, 4:03:46 AM5/19/08
to Google Web Toolkit
I have a similar problem with my custom generator. It works fine in
hosted mode but will not compile in web mode.

The error message :

Computing all possible rebind results for
'com.mw4gwt.client.IGeneratableAbstrac
tActionFactoryTag'
Rebinding com.mw4gwt.client.IGeneratableAbstractActionFactoryTag
Assimilating generated source
[ERROR] Errors in 'C:\eclipseWorkspace\mnewsWebClient\src
\mnews\client\
Main.java'
[ERROR] Internal compiler error
java.lang.NullPointerException
at
com.google.gwt.user.rebind.ClassSourceFileComposer.print(ClassSourceF
ileComposer.java:144)
at
com.google.gwt.user.rebind.ClassSourceFileComposer.println(ClassSourc
eFileComposer.java:159)
at
com.google.gwt.user.rebind.ClassSourceFileComposer.<init>(ClassSource
FileComposer.java:61)
at
com.google.gwt.user.rebind.ClassSourceFileComposerFactory.createSourc
eWriter(ClassSourceFileComposerFactory.java:98)
at
com.mw4gwt.rebind.AbstractActionFactoryGenerator.generate(AbstractAct
ionFactoryGenerator.java:26)
at
com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java
:43)
at com.google.gwt.dev.shell.StandardRebindOracle
$Rebinder.tryRebind(Stan
dardRebindOracle.java:116)
at com.google.gwt.dev.shell.StandardRebindOracle
$Rebinder.rebind(Standar
dRebindOracle.java:61)
at
com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOr
acle.java:173)
at com.google.gwt.dev.GWTCompiler
$DistillerRebindPermutationOracle.getAl
lPossibleRebindAnswers(GWTCompiler.java:195)
at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesU
singRebinds(WebModeCompilerFrontEnd.java:105)
at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.process(Abstract
Compiler.java:137)
at
org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)

at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.compile(Abstract
Compiler.java:74)
at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.compile(Abstract
Compiler.java:162)
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.access
$600(Abstr
actCompiler.java:61)
at
com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java
:430)
at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDecl
arations(WebModeCompilerFrontEnd.java:65)
at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.<init>(JavaToJavaScri
ptCompiler.java:248)
at com.google.gwt.dev.GWTCompiler.distill(GWTCompiler.java:
329)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:755)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:745)
at com.google.gwt.dev.GWTCompiler.main(GWTCompiler.java:213)

Exception in thread "main" java.lang.NullPointerException
at
com.google.gwt.user.rebind.ClassSourceFileComposer.print(ClassSourceF
ileComposer.java:144)
at
com.google.gwt.user.rebind.ClassSourceFileComposer.println(ClassSourc
eFileComposer.java:159)
at
com.google.gwt.user.rebind.ClassSourceFileComposer.<init>(ClassSource
FileComposer.java:61)
at
com.google.gwt.user.rebind.ClassSourceFileComposerFactory.createSourc
eWriter(ClassSourceFileComposerFactory.java:98)
at
com.mw4gwt.rebind.AbstractActionFactoryGenerator.generate(AbstractAct
ionFactoryGenerator.java:26)
at
com.google.gwt.dev.cfg.RuleGenerateWith.realize(RuleGenerateWith.java
:43)
at com.google.gwt.dev.shell.StandardRebindOracle
$Rebinder.tryRebind(Stan
dardRebindOracle.java:116)
at com.google.gwt.dev.shell.StandardRebindOracle
$Rebinder.rebind(Standar
dRebindOracle.java:61)
at
com.google.gwt.dev.shell.StandardRebindOracle.rebind(StandardRebindOr
acle.java:173)
at com.google.gwt.dev.GWTCompiler
$DistillerRebindPermutationOracle.getAl
lPossibleRebindAnswers(GWTCompiler.java:195)
at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.doFindAdditionalTypesU
singRebinds(WebModeCompilerFrontEnd.java:105)
at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.process(Abstract
Compiler.java:137)
at
org.eclipse.jdt.internal.compiler.Compiler.compile(Compiler.java:329)

at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.compile(Abstract
Compiler.java:74)
at com.google.gwt.dev.jdt.AbstractCompiler
$CompilerImpl.compile(Abstract
Compiler.java:162)
at com.google.gwt.dev.jdt.AbstractCompiler$CompilerImpl.access
$600(Abstr
actCompiler.java:61)
at
com.google.gwt.dev.jdt.AbstractCompiler.compile(AbstractCompiler.java
:430)
at
com.google.gwt.dev.jdt.WebModeCompilerFrontEnd.getCompilationUnitDecl
arations(WebModeCompilerFrontEnd.java:65)
at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.<init>(JavaToJavaScri
ptCompiler.java:248)
at com.google.gwt.dev.GWTCompiler.distill(GWTCompiler.java:
329)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:755)
at com.google.gwt.dev.GWTCompiler.run(GWTCompiler.java:745)
at com.google.gwt.dev.GWTCompiler.main(GWTCompiler.java:213)

Reply all
Reply to author
Forward
0 new messages