diff --git a/ChangeLog b/ChangeLog index d6a9892..d465da4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,19 @@ +Wed Jan 2 01:32:12 2008 Minero Aoki + + * net/loveruby/cflat/compiler/TypeChecker.java: better error + message. + + * test/test.sh: run following tests. + + * test/deref-semcheck1.cb: check if dereferencing int causes + compile error. + + * test/deref-semcheck2.cb: check if dereferencing char causes + compile error. + + * test/deref-semcheck3.cb: check if dereferencing struct causes + compile error. + Wed Jan 2 01:24:05 2008 Minero Aoki * net/loveruby/cflat/compiler/TypeChecker.java: check member diff --git a/net/loveruby/cflat/compiler/TypeChecker.java b/net/loveruby/cflat/compiler/TypeChecker.java index 2c41177..c466f0c 100644 --- a/net/loveruby/cflat/compiler/TypeChecker.java +++ b/net/loveruby/cflat/compiler/TypeChecker.java @@ -394,16 +394,17 @@ class TypeChecker extends Visitor { } protected void incompatibleTypeError(Type l, Type r) { - errorHandler.error("incompatible type: " + - l.textize() + " and " + r.textize()); + errorHandler.error("incompatible type: " + + l.textize() + " and " + r.textize()); } protected void notIntegerError(Type type) { - errorHandler.error("non-integer argument for unary op: " + - type.textize()); + errorHandler.error("non-integer argument for unary op: " + + type.textize()); } protected void notPointerError(Type type) { - errorHandler.error("non-pointer argument: " + type.textize()); + errorHandler.error("dereferencing non-pointer expression: " + + type.textize()); } } diff --git a/test/deref-semcheck1.cb b/test/deref-semcheck1.cb new file mode 100644 index 0000000..4354d0f --- /dev/null +++ b/test/deref-semcheck1.cb @@ -0,0 +1 @@ +int main(int argc, char **argv) { return *1; } diff --git a/test/deref-semcheck2.cb b/test/deref-semcheck2.cb new file mode 100644 index 0000000..fb38a8b --- /dev/null +++ b/test/deref-semcheck2.cb @@ -0,0 +1 @@ +int main(int argc, char **argv) { return *'c'; } diff --git a/test/deref-semcheck3.cb b/test/deref-semcheck3.cb new file mode 100644 index 0000000..c3467a9 --- /dev/null +++ b/test/deref-semcheck3.cb @@ -0,0 +1,6 @@ +struct st { int x; }; + +int main(int argc, char **argv) { + struct st s; + return *s; +} diff --git a/test/test.sh b/test/test.sh index 7ceca45..309cae5 100755 --- a/test/test.sh +++ b/test/test.sh @@ -135,6 +135,9 @@ assert_error $CBC union-semcheck6.cb assert_out "5;5" ./pointer assert_out "1;2" ./ptrmemb +assert_error $CBC deref-semcheck1.cb +assert_error $CBC deref-semcheck2.cb +assert_error $CBC deref-semcheck3.cb assert_out "2;64;-128;0" ./charops assert_out "2;64;128;0" ./ucharops