Browse Source

Set file and line meta info

kindlich 5 years ago
parent
commit
f6516d5246
No known key found for this signature in database

+ 2
- 0
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/JavaCompiler.java View File

60
 		for (HighLevelDefinition definition : module.definitions.getAll()) {
60
 		for (HighLevelDefinition definition : module.definitions.getAll()) {
61
 			String className = getClassName(definition.position.getFilename());
61
 			String className = getClassName(definition.position.getFilename());
62
 			JavaScriptFile scriptFile = getScriptFile(scriptBlocks, definition.pkg.fullName + "/" + className);
62
 			JavaScriptFile scriptFile = getScriptFile(scriptBlocks, definition.pkg.fullName + "/" + className);
63
+			scriptFile.classWriter.visitSource(definition.position.getFilename(), null);
63
 			
64
 			
64
 			JavaClass cls = definition instanceof ExpansionDefinition ? context.getJavaExpansionClass(definition) : context.getJavaClass(definition);
65
 			JavaClass cls = definition instanceof ExpansionDefinition ? context.getJavaExpansionClass(definition) : context.getJavaClass(definition);
65
 			target.addClass(cls.internalName, definition.accept(new JavaDefinitionVisitor(context, scriptFile.classWriter)));
66
 			target.addClass(cls.internalName, definition.accept(new JavaDefinitionVisitor(context, scriptFile.classWriter)));
79
 			final SourceFile sourceFile = script.file;
80
 			final SourceFile sourceFile = script.file;
80
 			final String className = getClassName(sourceFile == null ? null : sourceFile.getFilename());
81
 			final String className = getClassName(sourceFile == null ? null : sourceFile.getFilename());
81
 			JavaScriptFile scriptFile = getScriptFile(scriptBlocks, script.pkg.fullName + "/" + className);
82
 			JavaScriptFile scriptFile = getScriptFile(scriptBlocks, script.pkg.fullName + "/" + className);
83
+			scriptFile.classWriter.visitSource(script.file.getFilename(), null);
82
 
84
 
83
 			String methodName = scriptFile.scriptMethods.isEmpty() ? "run" : "run" + scriptFile.scriptMethods.size();
85
 			String methodName = scriptFile.scriptMethods.isEmpty() ? "run" : "run" + scriptFile.scriptMethods.size();
84
 
86
 

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

36
 
36
 
37
 	@Override
37
 	@Override
38
 	public Boolean visitBlock(BlockStatement statement) {
38
 	public Boolean visitBlock(BlockStatement statement) {
39
+    	javaWriter.position(statement.position.fromLine);
39
 		Boolean returns = false;
40
 		Boolean returns = false;
40
 		for (Statement statement1 : statement.statements) {
41
 		for (Statement statement1 : statement.statements) {
41
 			returns = statement1.accept(this);
42
 			returns = statement1.accept(this);
45
 
46
 
46
 	@Override
47
 	@Override
47
 	public Boolean visitBreak(BreakStatement statement) {
48
 	public Boolean visitBreak(BreakStatement statement) {
49
+    	javaWriter.position(statement.position.fromLine);
48
 		javaWriter.goTo(javaWriter.getNamedLabel(statement.target.label + "_end"));
50
 		javaWriter.goTo(javaWriter.getNamedLabel(statement.target.label + "_end"));
49
 		return false;
51
 		return false;
50
 	}
52
 	}
51
 
53
 
52
 	@Override
54
 	@Override
53
 	public Boolean visitContinue(ContinueStatement statement) {
55
 	public Boolean visitContinue(ContinueStatement statement) {
56
+    	javaWriter.position(statement.position.fromLine);
54
 		javaWriter.goTo(javaWriter.getNamedLabel(statement.target.label + "_start"));
57
 		javaWriter.goTo(javaWriter.getNamedLabel(statement.target.label + "_start"));
55
 		return false;
58
 		return false;
56
 	}
59
 	}
57
 
60
 
58
 	@Override
61
 	@Override
59
 	public Boolean visitDoWhile(DoWhileStatement statement) {
62
 	public Boolean visitDoWhile(DoWhileStatement statement) {
63
+    	javaWriter.position(statement.position.fromLine);
60
 		Label start = new Label();
64
 		Label start = new Label();
61
 		Label end = new Label();
65
 		Label end = new Label();
62
 		if (statement.label == null)
66
 		if (statement.label == null)
82
 
86
 
83
 	@Override
87
 	@Override
84
 	public Boolean visitExpression(ExpressionStatement statement) {
88
 	public Boolean visitExpression(ExpressionStatement statement) {
89
+    	javaWriter.position(statement.position.fromLine);
85
 		statement.expression.accept(nonPushingExpressionVisitor);
90
 		statement.expression.accept(nonPushingExpressionVisitor);
86
 		return false;
91
 		return false;
87
 	}
92
 	}
88
 
93
 
89
 	@Override
94
 	@Override
90
 	public Boolean visitForeach(ForeachStatement statement) {
95
 	public Boolean visitForeach(ForeachStatement statement) {
96
+    	javaWriter.position(statement.position.fromLine);
91
 		//Create Labels
97
 		//Create Labels
92
 		Label start = new Label();
98
 		Label start = new Label();
93
 		Label end = new Label();
99
 		Label end = new Label();
147
 
153
 
148
 	@Override
154
 	@Override
149
 	public Boolean visitIf(IfStatement statement) {
155
 	public Boolean visitIf(IfStatement statement) {
156
+    	javaWriter.position(statement.position.fromLine);
150
 		statement.condition.accept(expressionVisitor);
157
 		statement.condition.accept(expressionVisitor);
151
 		Label onElse = null;
158
 		Label onElse = null;
152
 		Label end = new Label();
159
 		Label end = new Label();
171
 	public Boolean visitLock(LockStatement statement) {
178
 	public Boolean visitLock(LockStatement statement) {
172
 		return false;
179
 		return false;
173
 	}
180
 	}
174
-
181
+	
182
+	@Override
183
+	public Boolean visitInvalid(InvalidStatement statement) {
184
+		throw new UnsupportedOperationException("Invalid Statement: " + statement.message);
185
+	}
186
+	
175
 	@Override
187
 	@Override
176
 	public Boolean visitReturn(ReturnStatement statement) {
188
 	public Boolean visitReturn(ReturnStatement statement) {
189
+    	javaWriter.position(statement.position.fromLine);
177
 		statement.value.accept(expressionVisitor);
190
 		statement.value.accept(expressionVisitor);
178
 		javaWriter.returnType(context.getType(statement.value.type));
191
 		javaWriter.returnType(context.getType(statement.value.type));
179
 		return true;
192
 		return true;
181
 
194
 
182
 	@Override
195
 	@Override
183
 	public Boolean visitSwitch(SwitchStatement statement) {
196
 	public Boolean visitSwitch(SwitchStatement statement) {
197
+    	javaWriter.position(statement.position.fromLine);
184
 
198
 
185
 		final Label start = new Label();
199
 		final Label start = new Label();
186
 		final Label end = new Label();
200
 		final Label end = new Label();
246
 
260
 
247
 	@Override
261
 	@Override
248
 	public Boolean visitThrow(ThrowStatement statement) {
262
 	public Boolean visitThrow(ThrowStatement statement) {
263
+    	javaWriter.position(statement.position.fromLine);
249
 		statement.value.accept(expressionVisitor);
264
 		statement.value.accept(expressionVisitor);
250
 		javaWriter.aThrow();
265
 		javaWriter.aThrow();
251
 		return false;
266
 		return false;
253
 
268
 
254
 	@Override
269
 	@Override
255
 	public Boolean visitTryCatch(TryCatchStatement statement) {
270
 	public Boolean visitTryCatch(TryCatchStatement statement) {
271
+    	javaWriter.position(statement.position.fromLine);
256
 		final Label tryCatchStart = new Label();
272
 		final Label tryCatchStart = new Label();
257
 		final Label tryFinish = new Label();
273
 		final Label tryFinish = new Label();
258
 		final Label tryCatchFinish = new Label();
274
 		final Label tryCatchFinish = new Label();
304
 
320
 
305
 	@Override
321
 	@Override
306
 	public Boolean visitVar(VarStatement statement) {
322
 	public Boolean visitVar(VarStatement statement) {
323
+    	javaWriter.position(statement.position.fromLine);
307
 		if (statement.initializer != null) {
324
 		if (statement.initializer != null) {
308
 			statement.initializer.accept(expressionVisitor);
325
 			statement.initializer.accept(expressionVisitor);
309
 		}
326
 		}
322
 
339
 
323
 	@Override
340
 	@Override
324
 	public Boolean visitWhile(WhileStatement statement) {
341
 	public Boolean visitWhile(WhileStatement statement) {
342
+    	javaWriter.position(statement.position.fromLine);
325
 		Label start = new Label();
343
 		Label start = new Label();
326
 		Label end = new Label();
344
 		Label end = new Label();
327
 
345
 

+ 1108
- 1103
JavaBytecodeCompiler/src/main/java/org/openzen/zenscript/javabytecode/compiler/JavaWriter.java
File diff suppressed because it is too large
View File


Loading…
Cancel
Save