From 762ecba36322fbc0815aae97de7c865d8fa9be8e Mon Sep 17 00:00:00 2001 From: Volker Berlin Date: Sun, 23 Feb 2020 17:51:32 +0100 Subject: [PATCH] Add error message for not supported class constants --- .../jwebassembly/module/WasmCodeBuilder.java | 5 ++++- .../jwebassembly/runtime/RuntimeErrors.java | 13 +++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java index 27eebce..490b3cd 100644 --- a/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java +++ b/src/de/inetsoftware/jwebassembly/module/WasmCodeBuilder.java @@ -371,8 +371,11 @@ public abstract class WasmCodeBuilder { FunctionName name = strings.getStringConstantFunction(); instructions.add( new WasmConstInstruction( id, ValueType.i32, javaCodePos, lineNumber ) ); addCallInstruction( name, javaCodePos, lineNumber ); - } else { + } else if( value instanceof Number ) { instructions.add( new WasmConstInstruction( (Number)value, javaCodePos, lineNumber ) ); + } else { + //TODO There can be ConstantClass, MethodType and MethodHandle + throw new WasmException( "Class constants are not supported. : " + value, lineNumber ); } } diff --git a/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java b/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java index 97c5e69..45b848c 100644 --- a/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java +++ b/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java @@ -151,4 +151,17 @@ public class RuntimeErrors { return (Integer)obj; } } + + @Test + public void classConatnt() throws IOException { + compileErrorTest( "Class constants are not supported.", ClassConstant.class ); + } + + static class ClassConstant { + @Export + static Object runnable() { + Class elemtentType = Integer.class; + return java.lang.reflect.Array.newInstance(elemtentType, 42); + } + } }