Don't inherit metaclasses.

Also disallow super() in static methods. It won't do anything
useful (it always just delegates to Class) anyway.
This commit is contained in:
Bob Nystrom
2014-01-17 17:29:10 -08:00
parent 1d808cf49c
commit e8791b6bab
5 changed files with 20 additions and 42 deletions
@@ -0,0 +1,7 @@
class Foo {
static methodOnFoo { IO.print("foo") }
}
class Bar is Foo {}
Bar.methodOnFoo // expect runtime error: Receiver does not implement method 'methodOnFoo'.
@@ -1,23 +0,0 @@
class Foo {
static methodOnFoo { IO.print("foo") }
static method(a) { IO.print("foo") }
static method(a, b, c) { IO.print("foo") }
static override { IO.print("foo") }
}
class Bar is Foo {
static methodOnBar { IO.print("bar") }
static method(a, b) { IO.print("bar") }
static method(a, b, c, d) { IO.print("bar") }
static override { IO.print("bar") }
}
Bar.methodOnFoo // expect: foo
Bar.methodOnBar // expect: bar
// Methods with different arity do not shadow each other.
Bar.method(1) // expect: foo
Bar.method(1, 2) // expect: bar
Bar.method(1, 2, 3) // expect: foo
Bar.method(1, 2, 3, 4) // expect: bar
Bar.override // expect: bar
+5
View File
@@ -0,0 +1,5 @@
class Foo {
static method {
super // expect error
}
}