E01080: 'self' does not exist in EK9 - use 'this' keyword

Category: E01xxx Parsing and excluded constructs · Reported in phase: SYMBOL_DEFINITION · Classification: SELF_NOT_SUPPORTED · All error codes

What went wrong

The 'self' keyword does not exist in EK9.

Worked examples

Compilable examples demonstrating this error and the correct fix:

  • ek9 -q 793 (Why does EK9 reject None and self as identifiers?)

Rationale

EK9 uses 'this' instead of 'self':

  • Consistent with Java, C++, JavaScript conventions
  • EK9 targets developers from multiple language backgrounds
  • 'this' is implicit in most contexts

How to fix it

Replace 'self' with 'this', or omit it entirely when unambiguous.

See also

  • E01077: 'def' not supported (EK9 uses function name directly)
  • E01078: 'elif' not supported (use 'else if')
  • E01079: 'None' not supported (use tri-state semantics)
  • E01080: 'self' not supported (use 'this')
  • E01081: list comprehensions not supported (use stream pipelines)

https://ek9.io/classes.html https://ek9.io/forAI.json#$.excludedFeatures.features[?(@.keyword=="self")]

Examples

Every example is compiled by the EK9 compiler: the first fails exactly as captioned, the others fix it.

Fails with E01080: 'self' does not exist in EK9 - use 'this' keyword

#!ek9
defines module error.e01080.bad

  defines class

    Person
      name as String: "Steve"

      greeting()
        <- rtn as String: "I am " + self.name

      default operator ?

Fixed: Use 'this', or just the property name when that is unambiguous

#!ek9
defines module error.e01080.good

  defines class

    Person
      name as String: "Steve"

      greeting()
        <- rtn as String: "I am " + this.name

      shortGreeting()
        <- rtn as String: "I am " + name

      default operator ?

Questions and answers

These Q&A entries show E01080 and its fix: