I was fiddling with the gwt canvas demo and ran across an Internal
Compiler Exception.
Not that I mind, because I am nothing if not flexible!
Should I poke into the compiler code since gwt developers have to
handle this all the time, or is it just because I've done something
very wrong?

Thanks if you know and thanks if you don't.

Sincerely,

David Heimann


Ubuntu 10.04.1 LTS \n \l


    Eclipse SDK 3.6.1.M20100909-0800
    Google App Engine Java SDK 1.4.2    1.4.2.v201102111811
    Google Plugin for Eclipse 3.6       2.2.0.v201102111811
      Eclipse Platform
3.6.1.r361_v20100909-9gF78GrkFqw7GrsZnvz0JWNTeb6fue6896L
        Eclipse Help System     1.2.0.v20100427-7e7jEQFEp4jsWcboLU9l93
        Eclipse RCP     3.6.1.r361_v20100827-9OArFLdFjY-ThSQXmKvKz0_T
        Equinox p2 Provisioning
2.0.1.r361_v20100903-897HFZFFZRuSD2LMtVxyz0Vr
      GWT Designer Core 2.2.0.r36x201102111446
      GWT Designer Editor       2.2.0.r36x201102111505
      WindowBuilder Core        0.9.0.r36x201102111430
        Eclipse Plug-in Development Environment
3.6.1.r361_v20100727-7b7mFL-FET3dhESDgE5_bkJ
      WindowBuilder CSS Support 0.9.0.r36x201102051550
      WindowBuilder XML Core    0.9.0.r36x201102111443
    Google Web Toolkit SDK 2.2.0        2.2.0.v201102111811


Source:
package com.gae01.egypt.client;

import com.google.gwt.canvas.client.Canvas;
import com.google.gwt.canvas.dom.client.Context2d;
import com.google.gwt.canvas.dom.client.CssColor;
import com.google.gwt.canvas.dom.client.FillStrokeStyle;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.RootPanel;

public class Papyrus implements EntryPoint {
          static final String holderId = "canvasholder";
          static final String upgradeMessage = "Your browser does not support
the HTML5 Canvas. Please upgrade your browser to view this demo.";
          Canvas canvas;
          Canvas backBuffer;
          Context2d context;
          Context2d backBufferContext;
          static final int height = 400;
          static final int width = 400;
          final FillStrokeStyle strokeStyle = CssColor.make("#333300");
          final CssColor redrawColor =
CssColor.make("rgba(255,255,255,0.6)");

          @Override
        public void onModuleLoad() {
                // TODO Auto-generated method stub
                    canvas = Canvas.createIfSupported();
                    backBuffer = Canvas.createIfSupported();
                    if (canvas == null) {
                      RootPanel.get(holderId).add(new Label(upgradeMessage));
                      return;
                    }
                    canvas.setWidth(width + "px");
                    canvas.setHeight(height + "px");
                    canvas.setCoordinateSpaceWidth(width);
                    canvas.setCoordinateSpaceHeight(height);
                    backBuffer.setCoordinateSpaceWidth(width);
                    backBuffer.setCoordinateSpaceHeight(height);
                    RootPanel.get(holderId).add(canvas);
                    context = canvas.getContext2d();
                    backBufferContext = backBuffer.getContext2d();

        }
          void doUpdate() {
                    // update the back canvas
                    backBufferContext.setFillStyle(redrawColor);
                    backBufferContext.fillRect(0, 0, width, height);
                        context.setStrokeStyle(strokeStyle);
                        context.beginPath();
                        context.arc(0,0,20,0, Math.PI * 2, true);
                        context.closePath();
                        context.stroke();
                  }
}


Error:


Compiling module com.gae01.egypt.Papyrus
   [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:
108)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:127)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.rescue(ControlFlowAnalyzer.java:557)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.rescueAndInstantiate(ControlFlowAnalyzer.java:614)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.visit(ControlFlowAnalyzer.java:371)
        at com.google.gwt.dev.jjs.ast.JNewInstance.traverse(JNewInstance.java:
84)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:115)
        at
com.google.gwt.dev.jjs.ast.JThrowStatement.traverse(JThrowStatement.java:
38)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:143)
        at
com.google.gwt.dev.jjs.ast.JVisitor.acceptWithInsertRemoveImmutable(JVisitor.java:
169)
        at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:83)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:136)
        at com.google.gwt.dev.jjs.ast.JIfStatement.traverse(JIfStatement.java:
53)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:143)
        at
com.google.gwt.dev.jjs.ast.JVisitor.acceptWithInsertRemoveImmutable(JVisitor.java:
169)
        at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:83)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:136)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:132)
        at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:
82)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:329)
        at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:297)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.rescue(ControlFlowAnalyzer.java:502)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.visit(ControlFlowAnalyzer.java:335)
        at com.google.gwt.dev.jjs.ast.JMethodCall.traverse(JMethodCall.java:
170)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:115)
        at
com.google.gwt.dev.jjs.ast.JReturnStatement.traverse(JReturnStatement.java:
39)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:143)
        at
com.google.gwt.dev.jjs.ast.JVisitor.acceptWithInsertRemoveImmutable(JVisitor.java:
169)
        at com.google.gwt.dev.jjs.ast.JBlock.traverse(JBlock.java:83)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:136)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:132)
        at com.google.gwt.dev.jjs.ast.JMethodBody.traverse(JMethodBody.java:
82)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.ast.JMethod.visitChildren(JMethod.java:329)
        at com.google.gwt.dev.jjs.ast.JMethod.traverse(JMethod.java:297)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:119)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.rescue(ControlFlowAnalyzer.java:502)
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.access$1200(ControlFlowAnalyzer.java:91)
        at
com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer.traverseFrom(ControlFlowAnalyzer.java:
801)
        at
com.google.gwt.dev.jjs.impl.Pruner.traverseFromCodeGenTypes(Pruner.java:
678)
        at com.google.gwt.dev.jjs.impl.Pruner.execImpl(Pruner.java:642)
        at com.google.gwt.dev.jjs.impl.Pruner.exec(Pruner.java:526)
        at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.optimizeLoop(JavaToJavaScriptCompiler.java:
796)
        at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.optimize(JavaToJavaScriptCompiler.java:
709)
        at
com.google.gwt.dev.jjs.JavaToJavaScriptCompiler.precompile(JavaToJavaScriptCompiler.java:
635)
        at
com.google.gwt.dev.jjs.JavaScriptCompiler.precompile(JavaScriptCompiler.java:
35)
        at com.google.gwt.dev.Precompile.precompile(Precompile.java:541)
        at com.google.gwt.dev.Precompile.precompile(Precompile.java:495)
        at com.google.gwt.dev.Precompile.precompile(Precompile.java:407)
        at com.google.gwt.dev.Compiler.run(Compiler.java:215)
        at com.google.gwt.dev.Compiler.run(Compiler.java:187)
        at com.google.gwt.dev.Compiler$1.run(Compiler.java:159)
        at com.google.gwt.dev.CompileTaskRunner.doRun(CompileTaskRunner.java:
87)
        at
com.google.gwt.dev.CompileTaskRunner.runWithAppropriateLogger(CompileTaskRunner.java:
81)
        at com.google.gwt.dev.Compiler.main(Compiler.java:166)
Caused by: java.lang.NullPointerException
        at com.google.gwt.dev.jjs.impl.ControlFlowAnalyzer
$RescueVisitor.visit(ControlFlowAnalyzer.java:205)
        at com.google.gwt.dev.jjs.ast.JClassType.traverse(JClassType.java:60)
        at com.google.gwt.dev.jjs.ast.JVisitor.accept(JVisitor.java:124)
        ... 67 more
      [ERROR] at ArithmeticException.java(26): final class
ArithmeticException extends RuntimeException
         com.google.gwt.dev.jjs.ast.JClassType
      [ERROR] at LongLibBase.java(118): new ArithmeticException()
         com.google.gwt.dev.jjs.ast.JNewInstance
      [ERROR] at LongLibBase.java(118): throw new
ArithmeticException()
         com.google.gwt.dev.jjs.ast.JThrowStatement
      [ERROR] at LongLibBase.java(117): {
  throw new ArithmeticException();
}
         com.google.gwt.dev.jjs.ast.JBlock
      [ERROR] at LongLibBase.java(117): if (LongLibBase.getLNative(b)
== 0 && LongLibBase.getMNative(b) == 0 && LongLibBase.getHNative(b) ==
0) {
  throw new ArithmeticException();
}
         com.google.gwt.dev.jjs.ast.JIfStatement
      [ERROR] at LongLibBase.java(115): {
  if (LongLibBase.getLNative(b) == 0 && LongLibBase.getMNative(b) == 0
&& LongLibBase.getHNative(b) == 0) {
    throw new ArithmeticException();
  }
  if (LongLibBase.getLNative(a) == 0 && LongLibBase.getMNative(a) == 0
&& LongLibBase.getHNative(a) == 0) {
    computeRemainder && (LongLibBase.remainder =
LongLibBase.create0(0, 0, 0));
    return LongLibBase.create0(0, 0, 0);
  }
  if (LongLibBase.getHNative(b) == 524288 && LongLibBase.getMNative(b)
== 0 && LongLibBase.getLNative(b) == 0) {
    return LongLibBase.divModByMinValue(a, computeRemainder);
  }
  boolean negative = false;
  if (LongLibBase.getHNative(b) >> 19 != 0) {
    b = LongLib.neg(b);
    negative = !negative;
  }
  final int bpower = LongLibBase.powerOfTwo(b);
  boolean aIsNegative = false;
  boolean aIsMinValue = false;
  boolean aIsCopy = false;
  if (LongLibBase.getHNative(a) == 524288 && LongLibBase.getMNative(a)
== 0 && LongLibBase.getLNative(a) == 0) {
    aIsMinValue = true;
    aIsNegative = true;
    if (bpower == -1) {
      a = LongLibBase.create(LongLib$Const.MAX_VALUE);
      aIsCopy = true;
      negative = !negative;
    } else {
      final LongLibBase$LongEmul c = LongLib.shr(a, bpower);
      negative && LongLibBase.negate(c);
      computeRemainder && (LongLibBase.remainder =
LongLibBase.create0(0, 0, 0));
      return c;
    }
  } else if (LongLibBase.getHNative(a) >> 19 != 0) {
    aIsNegative = true;
    a = LongLib.neg(a);
    aIsCopy = true;
    negative = !negative;
  }
  if (bpower != -1) {
    return LongLibBase.divModByShift(a, bpower, negative, aIsNegative,
computeRemainder);
  }
  if (!LongLib.gte(a, b)) {
    computeRemainder && (aIsNegative ? (LongLibBase.remainder =
LongLib.neg(a)) : (LongLibBase.remainder =
LongLibBase.create0(LongLibBase.getLNative(a),
LongLibBase.getMNative(a), LongLibBase.getHNative(a))));
    return LongLibBase.create0(0, 0, 0);
  }
  return LongLibBase.divModHelper(aIsCopy ? a :
LongLibBase.create0(LongLibBase.getLNative(a),
LongLibBase.getMNative(a), LongLibBase.getHNative(a)), b, negative,
aIsNegative, aIsMinValue, computeRemainder);
}
         com.google.gwt.dev.jjs.ast.JBlock
      [ERROR] at LongLibBase.java(115): {
  if (LongLibBase.getLNative(b) == 0 && LongLibBase.getMNative(b) == 0
&& LongLibBase.getHNative(b) == 0) {
    throw new ArithmeticException();
  }
  if (LongLibBase.getLNative(a) == 0 && LongLibBase.getMNative(a) == 0
&& LongLibBase.getHNative(a) == 0) {
    computeRemainder && (LongLibBase.remainder =
LongLibBase.create0(0, 0, 0));
    return LongLibBase.create0(0, 0, 0);
  }
  if (LongLibBase.getHNative(b) == 524288 && LongLibBase.getMNative(b)
== 0 && LongLibBase.getLNative(b) == 0) {
    return LongLibBase.divModByMinValue(a, computeRemainder);
  }
  boolean negative = false;
  if (LongLibBase.getHNative(b) >> 19 != 0) {
    b = LongLib.neg(b);
    negative = !negative;
  }
  final int bpower = LongLibBase.powerOfTwo(b);
  boolean aIsNegative = false;
  boolean aIsMinValue = false;
  boolean aIsCopy = false;
  if (LongLibBase.getHNative(a) == 524288 && LongLibBase.getMNative(a)
== 0 && LongLibBase.getLNative(a) == 0) {
    aIsMinValue = true;
    aIsNegative = true;
    if (bpower == -1) {
      a = LongLibBase.create(LongLib$Const.MAX_VALUE);
      aIsCopy = true;
      negative = !negative;
    } else {
      final LongLibBase$LongEmul c = LongLib.shr(a, bpower);
      negative && LongLibBase.negate(c);
      computeRemainder && (LongLibBase.remainder =
LongLibBase.create0(0, 0, 0));
      return c;
    }
  } else if (LongLibBase.getHNative(a) >> 19 != 0) {
    aIsNegative = true;
    a = LongLib.neg(a);
    aIsCopy = true;
    negative = !negative;
  }
  if (bpower != -1) {
    return LongLibBase.divModByShift(a, bpower, negative, aIsNegative,
computeRemainder);
  }
  if (!LongLib.gte(a, b)) {
    computeRemainder && (aIsNegative ? (LongLibBase.remainder =
LongLib.neg(a)) : (LongLibBase.remainder =
LongLibBase.create0(LongLibBase.getLNative(a),
LongLibBase.getMNative(a), LongLibBase.getHNative(a))));
    return LongLibBase.create0(0, 0, 0);
  }
  return LongLibBase.divModHelper(aIsCopy ? a :
LongLibBase.create0(LongLibBase.getLNative(a),
LongLibBase.getMNative(a), LongLibBase.getHNative(a)), b, negative,
aIsNegative, aIsMinValue, computeRemainder);
}
         com.google.gwt.dev.jjs.ast.JMethodBody
      [ERROR] at LongLibBase.java(115): public static final LongLibBase
$LongEmul divMod(LongLibBase$LongEmul a, LongLibBase$LongEmul b,
boolean computeRemainder);

         com.google.gwt.dev.jjs.ast.JMethod
      [ERROR] at LongLib.java(77): LongLibBase.divMod(a, b, false)
         com.google.gwt.dev.jjs.ast.JMethodCall
      [ERROR] at LongLib.java(77): return LongLibBase.divMod(a, b,
false)
         com.google.gwt.dev.jjs.ast.JReturnStatement
      [ERROR] at LongLib.java(76): {
  return LongLibBase.divMod(a, b, false);
}
         com.google.gwt.dev.jjs.ast.JBlock
      [ERROR] at LongLib.java(76): {
  return LongLibBase.divMod(a, b, false);
}
         com.google.gwt.dev.jjs.ast.JMethodBody
      [ERROR] at LongLib.java(76): public static final LongLibBase
$LongEmul div(LongLibBase$LongEmul a, LongLibBase$LongEmul b);

         com.google.gwt.dev.jjs.ast.JMethod


-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to