From: Simon Marchetto Date: Tue, 29 Oct 2013 15:28:56 +0000 (+0100) Subject: Bug 13010 fixed: Wrong class was returned by jcompile (with ecj) X-Git-Tag: 5.5.0~1210 X-Git-Url: http://gitweb.scilab.org/?p=scilab.git;a=commitdiff_plain;h=6bcf4ae23bf9399d64c24d8c61edf74a4bcaa1fb Bug 13010 fixed: Wrong class was returned by jcompile (with ecj) Change-Id: If013792bcdc66d24efe0e5966dc0cfcff5ad7671 --- diff --git a/scilab/CHANGES_5.5.X b/scilab/CHANGES_5.5.X index 47ba329..e5b305d 100644 --- a/scilab/CHANGES_5.5.X +++ b/scilab/CHANGES_5.5.X @@ -83,6 +83,8 @@ Scilab Bug Fixes * Bug #13008 fixed - 'help $' now opens the 'Symbols' help page. +* Bug #13010 fixed - Wrong class was returned by jcompile (with ecj). + * Bug #13011 fixed - ilib_compile failed under MacOS X 10.9. * Bug #13012 fixed - Vectorial export of rotated strings was wrong. diff --git a/scilab/modules/external_objects_java/src/java/org/scilab/modules/external_objects_java/ScilabJavaCompiler.java b/scilab/modules/external_objects_java/src/java/org/scilab/modules/external_objects_java/ScilabJavaCompiler.java index 906f06c..a42d871 100644 --- a/scilab/modules/external_objects_java/src/java/org/scilab/modules/external_objects_java/ScilabJavaCompiler.java +++ b/scilab/modules/external_objects_java/src/java/org/scilab/modules/external_objects_java/ScilabJavaCompiler.java @@ -184,7 +184,11 @@ public class ScilabJavaCompiler { if (isFile) { return -1; } else { - return ScilabClassLoader.loadJavaClass(manager.className, true); + if (manager.className != null && !manager.className.isEmpty()) { + return ScilabClassLoader.loadJavaClass(manager.className, true); + } else { + return -1; + } } } else { if (!isECJ) { @@ -352,7 +356,7 @@ public class ScilabJavaCompiler { @Override public JavaFileObject getJavaFileForOutput(Location location, String className, Kind kind, FileObject sibling) throws IOException { - if (sibling instanceof SourceString) { + if (sibling instanceof SourceString && className != null && className.indexOf('$') == -1) { this.className = className.replace('/', '.'); } diff --git a/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.dia.ref b/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.dia.ref new file mode 100644 index 0000000..3dddc64 --- /dev/null +++ b/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.dia.ref @@ -0,0 +1,12 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= +compiledClass = jcompile("Test", ["public class Test {"; +"public enum foo { ONE, TWO, THREE; }"; +"public static double bar(foo x) { return (double) x.ordinal(); }}"]); +classObj = compiledClass.class; +className = classObj.getName(jvoid); +assert_checkequal(className, "Test"); diff --git a/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.tst b/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.tst new file mode 100644 index 0000000..c742313 --- /dev/null +++ b/scilab/modules/external_objects_java/tests/nonreg_tests/bug_13010.tst @@ -0,0 +1,14 @@ +// ============================================================================= +// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab +// Copyright (C) 2013 - Scilab Enterprises +// +// This file is distributed under the same license as the Scilab package. +// ============================================================================= + +compiledClass = jcompile("Test", ["public class Test {"; +"public enum foo { ONE, TWO, THREE; }"; +"public static double bar(foo x) { return (double) x.ordinal(); }}"]); + +classObj = compiledClass.class; +className = classObj.getName(jvoid); +assert_checkequal(className, "Test");