Browse Source

Fixed compiled dependencies not being registered properly. Also fixed accidental recursion in visitGetField.

Stan Hebben 6 years ago
parent
commit
131ede5818

+ 2
- 1
Constructor/src/main/java/org/openzen/zenscript/constructor/ConstructorRegistry.java View File

200
 		
200
 		
201
 		private final JavaCompiler compiler = new JavaCompiler();
201
 		private final JavaCompiler compiler = new JavaCompiler();
202
 		private final List<JavaBytecodeModule> modules = new ArrayList<>();
202
 		private final List<JavaBytecodeModule> modules = new ArrayList<>();
203
-		private final JavaCompileSpace space = new SimpleJavaCompileSpace(registry);
203
+		private final SimpleJavaCompileSpace space = new SimpleJavaCompileSpace(registry);
204
 
204
 
205
 		@Override
205
 		@Override
206
 		public void addModule(SemanticModule module) {
206
 		public void addModule(SemanticModule module) {
207
 			JavaBytecodeModule result = compiler.compile(module.modulePackage.fullName, module, space);
207
 			JavaBytecodeModule result = compiler.compile(module.modulePackage.fullName, module, space);
208
 			modules.add(result);
208
 			modules.add(result);
209
+			space.register(result);
209
 		}
210
 		}
210
 
211
 
211
 		@Override
212
 		@Override

+ 1
- 1
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaExpressionVisitor.java View File

1883
 
1883
 
1884
 	@Override
1884
 	@Override
1885
 	public Void visitGetField(GetFieldExpression expression) {
1885
 	public Void visitGetField(GetFieldExpression expression) {
1886
-		expression.accept(this);
1886
+		expression.target.accept(this);
1887
 		getField(expression.field);
1887
 		getField(expression.field);
1888
 		return null;
1888
 		return null;
1889
 	}
1889
 	}

+ 7
- 1
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/definitions/JavaMemberVisitor.java View File

104
 
104
 
105
 	@Override
105
 	@Override
106
 	public Void visitDestructor(DestructorMember member) {
106
 	public Void visitDestructor(DestructorMember member) {
107
-		final JavaMethod method = JavaMethod.getVirtual(toClass, "close", "()V", Opcodes.ACC_PUBLIC);
107
+		int modifiers = Opcodes.ACC_PUBLIC;
108
+		if (member.body == null)
109
+			modifiers |= Opcodes.ACC_ABSTRACT;
110
+		
111
+		final JavaMethod method = JavaMethod.getVirtual(toClass, "close", "()V", modifiers);
112
+		if (member.body == null)
113
+			return null;
108
 
114
 
109
 		final Label constructorStart = new Label();
115
 		final Label constructorStart = new Label();
110
 		final Label constructorEnd = new Label();
116
 		final Label constructorEnd = new Label();

Loading…
Cancel
Save