v0.13.7
errors and warnings / classes

errors and warnings / classes / E3008

E3008 error

Class extends a non-class value, or a class only import type brings

area
classes (x3xxx)
fails the build
yes

A class extends something that isn't a class: an interface, a type alias, an enum, or a value such as a table. extends needs a class value to inherit from at run time. To take an interface's shape, write implements instead (class Dog implements Pet). A class that import type brings is only a type, with nothing to extend at run time: import it as a value (import Animal from "./animal").

Example

× failswowlua
interface Pet    name: stringendclass Dog extends Pet    name: string = "Rex"endprint(Dog)
✓ compileswowlua
interface Pet    name: stringendclass Dog implements Pet    name: string = "Rex"endprint(Dog)
× failssrc/main.wowluawowlua
import type Animal from "./animal"class Dog extends Animalendprint(Dog)
src/animal.wowluawowlua
export class Animalend
✓ compilessrc/main.wowluawowlua
import Animal from "./animal"class Dog extends Animalendprint(Dog)
src/animal.wowluawowlua
export class Animalend

The compiler reports it like this:

error[E3008]: class `Dog` extends `Pet`, an interface, not a class
  ┌─ src/main.wowlua:4:19
  │
4 │ class Dog extends Pet
  │                   ^^^ not a class
  │
  = help: a class extends one class; it implements interfaces (`implements I`)

Offline

terminal
$ wowlua explain E3008
E3008 (error): Class extends a non-class value, or a class only import type brings

source on GitHub ↗