diff --git a/src/vm/wren_vm.c b/src/vm/wren_vm.c index 42e4dd97..d7c75d14 100644 --- a/src/vm/wren_vm.c +++ b/src/vm/wren_vm.c @@ -512,7 +512,10 @@ static Value validateSuperclass(WrenVM* vm, Value name, Value superclassValue, superclass == vm->listClass || superclass == vm->mapClass || superclass == vm->rangeClass || - superclass == vm->stringClass) + superclass == vm->stringClass || + superclass == vm->boolClass || + superclass == vm->nullClass || + superclass == vm->numClass) { return wrenStringFormat(vm, "Class '@' cannot inherit from built-in class '@'.", diff --git a/test/language/inheritance/inherit_from_bool.wren b/test/language/inheritance/inherit_from_bool.wren new file mode 100644 index 00000000..64587389 --- /dev/null +++ b/test/language/inheritance/inherit_from_bool.wren @@ -0,0 +1 @@ +class Subclass is Bool {} // expect runtime error: Class 'Subclass' cannot inherit from built-in class 'Bool'. diff --git a/test/language/inheritance/inherit_from_null_class.wren b/test/language/inheritance/inherit_from_null_class.wren new file mode 100644 index 00000000..d0d0f0c1 --- /dev/null +++ b/test/language/inheritance/inherit_from_null_class.wren @@ -0,0 +1 @@ +class Subclass is Null {} // expect runtime error: Class 'Subclass' cannot inherit from built-in class 'Null'. diff --git a/test/language/inheritance/inherit_from_num.wren b/test/language/inheritance/inherit_from_num.wren new file mode 100644 index 00000000..9e0a456c --- /dev/null +++ b/test/language/inheritance/inherit_from_num.wren @@ -0,0 +1 @@ +class Subclass is Num {} // expect runtime error: Class 'Subclass' cannot inherit from built-in class 'Num'.