X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.scl.compiler%2Fsrc%2Forg%2Fsimantics%2Fscl%2Fcompiler%2Finternal%2Fcodegen%2Futils%2FClassBuilder.java;h=5316b861dc52e3e7a2e9b6424e0debf29ce96a13;hp=5518cb4878fec54a1d384b406f4d767e169427be;hb=fad36d463b75c3a9944d875fc627c3533f6da74d;hpb=ca40974f87c9db00eb77aaf1acc1e9937b37261b diff --git a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/ClassBuilder.java b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/ClassBuilder.java index 5518cb487..5316b861d 100644 --- a/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/ClassBuilder.java +++ b/bundles/org.simantics.scl.compiler/src/org/simantics/scl/compiler/internal/codegen/utils/ClassBuilder.java @@ -28,7 +28,8 @@ public class ClassBuilder { this.className = className; this.superClassName = superClassName; this.classWriter = new ClassWriter(ClassWriter.COMPUTE_MAXS); - this.classVisitor = SCLCompilerConfiguration.SHOW_COMPILED_BYTECODE + this.classVisitor = SCLCompilerConfiguration.SHOW_COMPILED_BYTECODE + && SCLCompilerConfiguration.debugFilter(moduleBuilder.namingPolicy.getModuleName()) ? new TraceClassVisitor(classWriter, new PrintWriter(System.out)) : classWriter; classVisitor.visit(Opcodes.V1_5, access, className, null, superClassName, interfaces); @@ -42,6 +43,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); @@ -68,6 +72,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 +86,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); @@ -87,9 +97,13 @@ public class ClassBuilder { methodVisitor.visitEnd(); } - public MethodBuilderBase addConstructor(int access, TypeDesc[] params) { + public MethodBuilderBase addConstructorBase(int access, TypeDesc[] params) { return addMethodBase(access, "", TypeDesc.VOID, params); } + + public MethodBuilder addConstructor(int access, TypeDesc[] params) { + return addMethod(access, "", TypeDesc.VOID, params); + } public MethodBuilder addInitializer() { return addMethod(Opcodes.ACC_PUBLIC, "", TypeDesc.VOID, Constants.EMPTY_TYPEDESC_ARRAY); @@ -101,6 +115,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(); }