diff --git a/scripts/check.py b/scripts/check.py
index 0827630..bbf5355 100644
--- a/scripts/check.py
+++ b/scripts/check.py
@@ -32,7 +32,7 @@ def test_compiler(test_dir, should_fail):
passed_files += 1
else:
if 'error' in result.stdout:
- print(f' {Color.RED}测试失败:{Color.RESET} {file_path} 应该编译通过,但是发现错误: {result.stderr}')
+ print(f' {Color.RED}测试失败:{Color.RESET} {file_path} 应该编译通过,但是发现错误。')
has_failed_tests = True
else:
print(f' {Color.GREEN}测试通过:{Color.RESET} {file_path}')
diff --git a/tests/fail/lang-change-local-var.ac b/tests/fail/lang-change-local-var.ac
new file mode 100644
index 0000000..19975c4
--- /dev/null
+++ b/tests/fail/lang-change-local-var.ac
@@ -0,0 +1,8 @@
+struct {
+
+T1 = Fn(h: A, y: B) -> A {
+ z = y;
+ z = h;
+ return z;
+};
+} main;
diff --git a/tests/fail/logic-use-self.ac b/tests/fail/logic-use-self.ac
new file mode 100644
index 0000000..74d2049
--- /dev/null
+++ b/tests/fail/logic-use-self.ac
@@ -0,0 +1,8 @@
+struct {
+
+T1 = Fn(h: A) -> B {
+ return T1(h);
+};
+
+} main;
+
diff --git a/tests/ok/function-types1.ac b/tests/ok/function-types1.ac
new file mode 100644
index 0000000..f3a5fc0
--- /dev/null
+++ b/tests/ok/function-types1.ac
@@ -0,0 +1,7 @@
+struct {
+
+T1 = Fn(h1: Fn(<>, , B), h2: A) -> B {
+ return h1(h2);
+};
+
+} main;
diff --git a/tests/ok/function-types2.ac b/tests/ok/function-types2.ac
new file mode 100644
index 0000000..9a5b141
--- /dev/null
+++ b/tests/ok/function-types2.ac
@@ -0,0 +1,7 @@
+struct {
+
+T1 = Fn(h1: Fn(, , B)) -> B {
+ return h1(h1);
+};
+
+} main;
diff --git a/tests/ok/lambda-capture.ac b/tests/ok/lambda-capture.ac
new file mode 100644
index 0000000..0b8e905
--- /dev/null
+++ b/tests/ok/lambda-capture.ac
@@ -0,0 +1,9 @@
+struct {
+
+T = Fn(z: Fn(<>, , b), y: Fn(<>, , c)) -> Fn(<>, , c) {
+ return Fn<>(h: a) -> c {
+ return y(z(h));
+ };
+};
+
+} main;
diff --git a/tests/ok/local-vars.ac b/tests/ok/local-vars.ac
new file mode 100644
index 0000000..5179bd5
--- /dev/null
+++ b/tests/ok/local-vars.ac
@@ -0,0 +1,8 @@
+struct {
+
+T1 = Fn(h1: A) -> A {
+ h2 = h1;
+ return h2;
+};
+
+} main;
diff --git a/tests/ok/multi-thoerems.ac b/tests/ok/multi-thoerems.ac
new file mode 100644
index 0000000..19fdee0
--- /dev/null
+++ b/tests/ok/multi-thoerems.ac
@@ -0,0 +1,15 @@
+struct {
+
+T1 = Fn(a: A) -> A {
+ return a;
+};
+
+T2 = Fn(a: b) -> b {
+ return a;
+};
+
+T3 = Fn(a: c) -> c {
+ return T2(T2(T1(a)));
+};
+
+} main;
diff --git a/tests/ok/nested-types.ac b/tests/ok/nested-types.ac
new file mode 100644
index 0000000..35c7c96
--- /dev/null
+++ b/tests/ok/nested-types.ac
@@ -0,0 +1,9 @@
+struct {
+
+T1 = Fn(h1: Fn(, , , C)>, B)) -> B {
+ return h1(Fn<>(h: B) -> B{
+ return h;
+ });
+};
+
+} main;
diff --git a/tests/ok/unicode-letters.ac b/tests/ok/unicode-letters.ac
new file mode 100644
index 0000000..4f09e6e
--- /dev/null
+++ b/tests/ok/unicode-letters.ac
@@ -0,0 +1,7 @@
+struct {
+
+中文定理名称 = Fn<来>(啊: 来) -> 来 {
+ return 啊;
+};
+
+} main;