diff --git a/app/src/processing/mode/java/preproc/pde.g b/app/src/processing/mode/java/preproc/pde.g index 0537f2b85..4355c2b79 100644 --- a/app/src/processing/mode/java/preproc/pde.g +++ b/app/src/processing/mode/java/preproc/pde.g @@ -194,13 +194,14 @@ constructorCast! // if this is a string literal, make sure the type we're trying to cast // to is one of the supported ones // - { #e.getType() != STRING_LITERAL || - ( #t.getType() == LITERAL_byte || + { (#e == null) || + ( (#e.getType() != STRING_LITERAL) || + ( #t.getType() == LITERAL_boolean || #t.getType() == LITERAL_double || #t.getType() == LITERAL_float || #t.getType() == LITERAL_int || #t.getType() == LITERAL_long || - #t.getType() == LITERAL_short ) }? + #t.getType() == LITERAL_short )) }? // create the node // {#constructorCast = #(#[CONSTRUCTOR_CAST,"CONSTRUCTOR_CAST"], t, e);} diff --git a/app/test/resources/bug1936.expected b/app/test/resources/bug1936.expected new file mode 100644 index 000000000..dd06677b0 --- /dev/null +++ b/app/test/resources/bug1936.expected @@ -0,0 +1,29 @@ +import processing.core.*; +import processing.data.*; +import processing.event.*; +import processing.opengl.*; + +import java.util.HashMap; +import java.util.ArrayList; +import java.io.File; +import java.io.BufferedReader; +import java.io.PrintWriter; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.IOException; + +public class bug1936 extends PApplet { + public void setup() { +char a = PApplet.parseChar(PApplet.parseByte(PApplet.parseInt("15"))); + noLoop(); + } + + static public void main(String[] passedArgs) { + String[] appletArgs = new String[] { "bug1936" }; + if (passedArgs != null) { + PApplet.main(concat(appletArgs, passedArgs)); + } else { + PApplet.main(appletArgs); + } + } +} diff --git a/app/test/resources/bug1936.pde b/app/test/resources/bug1936.pde new file mode 100644 index 000000000..95d332a4e --- /dev/null +++ b/app/test/resources/bug1936.pde @@ -0,0 +1 @@ +char a = char(byte(int("15"))); \ No newline at end of file diff --git a/app/test/src/test/processing/mode/java/ParserTests.java b/app/test/src/test/processing/mode/java/ParserTests.java index e364f5340..4f565a7d0 100644 --- a/app/test/src/test/processing/mode/java/ParserTests.java +++ b/app/test/src/test/processing/mode/java/ParserTests.java @@ -276,6 +276,11 @@ public class ParserTests { public void bug1534() { expectGood("bug1534"); } + + @Test + public void bug1936() { + expectGood("bug1936"); + } @Test public void bug315g() { diff --git a/core/src/processing/core/PApplet.java b/core/src/processing/core/PApplet.java index 2c6e4b9d4..e1e06b240 100755 --- a/core/src/processing/core/PApplet.java +++ b/core/src/processing/core/PApplet.java @@ -9635,7 +9635,7 @@ public class PApplet extends Applet } */ - static final public float[] parseByte(byte what[]) { + static final public float[] parseFloat(byte what[]) { float floaties[] = new float[what.length]; for (int i = 0; i < what.length; i++) { floaties[i] = what[i];