#[macro_use] mod common; #[cfg(test)] mod _super { tests! { bound_method in super is OK "A.method(arg)" } tests! { call_other_method in super is OK "Derived.bar()" "Base.foo()" } tests! { call_same_method in super is OK "Derived.foo()" "Base.foo()" } tests! { closure in super is OK "Base" } tests! { constructor in super is OK "Derived.init()" "Base.init(a, b)" } tests! { extra_arguments in super is ERR "[line 10:33] Error at ')': Expected 2 arguments but got 4" } tests! { indirectly_inherited in super is OK "C.foo()" "A.foo()" } tests! { missing_arguments in super is ERR "[line 9:16] Error at ')': Expected 2 arguments but got 1" } tests! { no_superclass_bind in super is ERR "[line 3:5] Error at 'super': Cannot use 'super' in a class with no superclass" } tests! { no_superclass_call in super is ERR "[line 3:5] Error at 'super': Cannot use 'super' in a class with no superclass" } tests! { no_superclass_method in super is ERR "[line 5:11] Error at 'doesNotExist': Undefined property 'doesNotExist'" } tests! { parenthesized in super is ERR "[line 8:11] Error at ')': Expected '.' after 'super'" } tests! { reassign_superclass in super is OK "Base.method()" "Base.method()" } tests! { super_at_top_level in super is ERR "[line 1:1] Error at 'super': Cannot use 'super' outside of a class" "[line 2:1] Error at 'super': Cannot use 'super' outside of a class" } tests! { super_in_closure_in_inherited_method in super is OK "A" } tests! { super_in_inherited_method in super is OK "A" } tests! { super_in_top_level_function in super is ERR "[line 1:1] Error at 'super': Cannot use 'super' outside of a class" } tests! { super_without_dot in super is ERR "[line 6:10] Error at ';': Expected '.' after 'super'" } tests! { super_without_name in super is ERR "[line 5:11] Error at ';': Expected superclass method name" } tests! { this_in_superclass_method in super is OK "a" "b" } }