From 4bb145d116af58ea57d2d5e152c39ab3ac3f3aa2 Mon Sep 17 00:00:00 2001
From: Volker Berlin <volker.berlin@googlemail.com>
Date: Tue, 12 Mar 2019 22:36:43 +0100
Subject: [PATCH] Error message for native methods

---
 .../jwebassembly/module/ModuleGenerator.java           |  2 +-
 .../jwebassembly/runtime/RuntimeErrors.java            | 10 ++++++++++
 2 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java
index a86dbde..25b381b 100644
--- a/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java
+++ b/src/de/inetsoftware/jwebassembly/module/ModuleGenerator.java
@@ -352,7 +352,7 @@ public class ModuleGenerator {
                 codeBuilder = javaCodeBuilder;
                 localVariableTable = code.getLocalVariableTable();
             } else {
-                return;
+                throw new WasmException( "Abstract or native method can not be used: " + name.fullName, -1 );
             }
             writeExport( name, method );
             writeMethodImpl( name, method.isStatic(), localVariableTable, codeBuilder );
diff --git a/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java b/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java
index 0df5b6f..c4e769b 100644
--- a/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java
+++ b/test/de/inetsoftware/jwebassembly/runtime/RuntimeErrors.java
@@ -110,4 +110,14 @@ public class RuntimeErrors {
             return 1;
         }
     }
+
+    @Test
+    public void nativeMethod() throws IOException {
+        compileErrorTest( "Abstract or native method can not be used:", NativeMethod.class );
+    }
+
+    static class NativeMethod {
+        @Export
+        native static float function();
+    }
 }