Skip to content

TP0227

Error: missing or unneeded @override

  • '<m>' overrides '<B>.<m>'; mark it '@override'
  • '<m>' does not override a method of <a base class|'<B>'>
  • '__init__' cannot be marked '@override'

From the golden case tests/cases/m15/tp0227_override.tpn:

tp0227_override.tpn
# Overrides must be marked @override, and only overrides may be (SPEC §4.3).
class Animal:
def __init__(self):
pass
def speak(self) -> str:
return "..."
class Dog(Animal):
def speak(self) -> str:
return "woof"
@override
def speek(self) -> str:
return "typo"
@override
def __init__(self):
super().__init__()
class Lone:
@override
def m(self):
pass

The compiler reports:

tp0227_override.tpn:10:9: error TP0227: 'speak' overrides 'Animal.speak'; mark it '@override'
tp0227_override.tpn:14:9: error TP0227: 'speek' does not override a method of 'Animal'
tp0227_override.tpn:18:9: error TP0227: '__init__' cannot be marked '@override'
tp0227_override.tpn:23:9: error TP0227: 'm' does not override a method of a base class

The specification lists every code.