Skip to content

[bug] compiler generated override getter/setter for filed in interface incorrectly #2968

@HerrCai0907

Description

@HerrCai0907

Bug description

I found this bug in our fork: wasm-ecosystem/warpo#203
I guess it's caused by override function does not check the base class.

Steps to reproduce

export interface PropertyName {
  // FIXME: should be inside Node interface
  range: Range;
  kind: NodeKind;
  getReadableName(): string;
}
export class ComputedPropertyName extends Node implements PropertyName {
  constructor(
    public expression: Expression,
    range: Range
  ) {
    super(NodeKind.ComputedPropertyName, range);
  }
  getReadableName(): string {
    return this.range.toString();
  }
}
export abstract class Node {
  constructor(
    /** Kind of this node. */
    public kind: NodeKind,
    /** Source range. */
    public range: Range
  ) {}
}

will generated

 (func $assemblyscript/src/ast/PropertyName#get:kind@override (param $0 i32) (result i32)
  (local $1 i32)
  (drop
   (i32.load
    (i32.sub
     (local.get $0)
     (i32.const 8)
    )
   )
  )
  (unreachable)
 )

AssemblyScript version

all

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions