]> gerrit.simantics Code Review - simantics/platform.git/blobdiff - bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/ClassBuilder.java
Resolve some dependency problems with SDK features
[simantics/platform.git] / bundles / org.simantics.scl.compiler / src / org / simantics / scl / compiler / internal / codegen / utils / ClassBuilder.java
index c3db313ba282a11fc0b70af210b7f9c69220ce9a..0fe185e611df41ae90efad7e394b77119b0328f4 100644 (file)
@@ -42,6 +42,9 @@ public class ClassBuilder {
             String methodName,
             TypeDesc ret,
             TypeDesc[] params) {
+        for(TypeDesc param : params)
+            if(param.equals(TypeDesc.VOID))
+                throw new IllegalArgumentException();
         MethodVisitor methodVisitor = classVisitor.visitMethod(access, methodName,
                 MethodDesc.forArguments(ret, params).getDescriptor(),
                 null, null);
@@ -49,7 +52,7 @@ public class ClassBuilder {
         return new MethodBuilder(this, moduleBuilder, (access&Opcodes.ACC_STATIC) != 0, methodVisitor, params);
     }
     
-    private MethodVisitor augmentMethodVisitor(String methodName, MethodVisitor methodVisitor) {
+    private MethodVisitor augmentMethodVisitor(final String methodName, MethodVisitor methodVisitor) {
         if(SCLCompilerConfiguration.TRACE_MAX_METHOD_SIZE && moduleBuilder != null) {
             methodVisitor = new CodeSizeEvaluator(methodVisitor) {
                 @Override
@@ -68,6 +71,9 @@ public class ClassBuilder {
             String methodName,
             TypeDesc ret,
             TypeDesc[] params) {
+        for(TypeDesc param : params)
+            if(param.equals(TypeDesc.VOID))
+                throw new IllegalArgumentException();
         MethodVisitor methodVisitor = classVisitor.visitMethod(access, methodName,
                 MethodDesc.forArguments(ret, params).getDescriptor(),
                 null, null);
@@ -79,6 +85,9 @@ public class ClassBuilder {
             String methodName,
             TypeDesc ret,
             TypeDesc[] params) {
+        for(TypeDesc param : params)
+            if(param.equals(TypeDesc.VOID))
+                throw new IllegalArgumentException();
         MethodVisitor methodVisitor = classVisitor.visitMethod(access, methodName,
                 MethodDesc.forArguments(ret, params).getDescriptor(),
                 null, null);
@@ -101,6 +110,8 @@ public class ClassBuilder {
 
     public void addField(int access, String fieldName,
             TypeDesc type) {
+        if(type.equals(TypeDesc.VOID))
+            throw new IllegalArgumentException();
         FieldVisitor fieldVisitor = classVisitor.visitField(access, fieldName, type.getDescriptor(), null, null);
         fieldVisitor.visitEnd();
     }
@@ -138,4 +149,8 @@ public class ClassBuilder {
             System.out.println();
         }*/
     }
+    
+    public ModuleBuilder getModuleBuilder() {
+        return moduleBuilder;
+    }
 }