impl fn with override fnThis proposal renames the syntax used to mark an overriding definition of a
virtual method from impl fn to override fn to avoid ambiguity.
The phrase impl fn was introduced to mark overriding virtual functions,
however, it is now ambiguous: besides indicating an overriding virtual function,
it can be parsed as an "impl" declaration when the construct following "impl"
begins with a lambda introduced by "fn".
The original syntax was adopted in proposal #777 to emphasize that implementing interfaces and overriding virtual functions are similar operations.
This proposal is to replace the impl fn syntax with override fn for method
overriding in class inheritance.
Note that impl is still a modifier keyword for library and package
declarations (impl library ... and impl package ... respectively). The
former is unambiguous and the latter is easy to disambiguate, so no change is
needed for these two cases.
This proposal is focused on the
That code is easy to read, understand, and write
Carbon goal. Changing the keyword from impl to override makes the intent
clearer, resolves syntax ambiguity, and adheres to existing C++ conventions.