mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 00:34:20 +03:00
Исправлена выдача ошибки в include при ошибке парсинга
This commit is contained in:
parent
e217e3bb84
commit
51b2ef93be
@ -1,5 +1,6 @@
|
||||
package com.annimon.ownlang.parser.ast;
|
||||
|
||||
import com.annimon.ownlang.exceptions.ParseException;
|
||||
import com.annimon.ownlang.parser.Lexer;
|
||||
import com.annimon.ownlang.parser.Parser;
|
||||
import com.annimon.ownlang.parser.SourceLoader;
|
||||
@ -40,7 +41,7 @@ public final class IncludeStatement extends InterruptableNode implements Stateme
|
||||
final Parser parser = new Parser(tokens);
|
||||
final Statement program = parser.parse();
|
||||
if (parser.getParseErrors().hasErrors()) {
|
||||
return null;
|
||||
throw new ParseException(parser.getParseErrors().toString());
|
||||
}
|
||||
return program;
|
||||
}
|
||||
|
35
src/test/resources/expressions/include.own
Normal file
35
src/test/resources/expressions/include.own
Normal file
@ -0,0 +1,35 @@
|
||||
use "std"
|
||||
|
||||
def testIncludeClass() {
|
||||
include "src/test/resources/expressions/includeClass.own.txt"
|
||||
obj = new IncludeClass()
|
||||
assertEquals("1", obj.field1)
|
||||
assertEquals(2, obj.field2)
|
||||
assertEquals(42, obj.test())
|
||||
}
|
||||
|
||||
def testIncludeNotExistsSource() {
|
||||
assertFail(def() {
|
||||
include "src/test.own"
|
||||
})
|
||||
}
|
||||
|
||||
def testCatchingIncludeNotExistsSource() {
|
||||
res = try(def() {
|
||||
include "src/test.own"
|
||||
}, def(classname, message) = "ok")
|
||||
assertEquals("ok", res)
|
||||
}
|
||||
|
||||
def testIncludeParseErrorSource() {
|
||||
assertFail(def() {
|
||||
include "src/test/resources/expressions/includeParseErrorSource.own.txt"
|
||||
})
|
||||
}
|
||||
|
||||
def testCatchingIncludeParseErrorSource() {
|
||||
res = try(def() {
|
||||
include "src/test/resources/expressions/includeParseErrorSource.own.txt"
|
||||
}, def(classname, message) = "ok")
|
||||
assertEquals("ok", res)
|
||||
}
|
8
src/test/resources/expressions/includeClass.own.txt
Normal file
8
src/test/resources/expressions/includeClass.own.txt
Normal file
@ -0,0 +1,8 @@
|
||||
class IncludeClass {
|
||||
field1 = "1"
|
||||
field2 = 2
|
||||
|
||||
def test() {
|
||||
return 42
|
||||
}
|
||||
}
|
@ -0,0 +1,4 @@
|
||||
def test() = return println match x {
|
||||
case case 1
|
||||
}
|
||||
value = "passed"
|
Loading…
Reference in New Issue
Block a user