Skip to content

abstract class keyword not stripped from compiled output #148

@mikitahimpel

Description

@mikitahimpel

Bug Description

When @oxc-angular/vite compiles a file with an abstract decorated class, the output retains the TypeScript abstract keyword, producing invalid JavaScript.

Reproduced in a minimal Vite + @oxc-angular/vite project (no Storybook, no Vitest).

Input (base.provider.ts):

import { Injectable } from '@angular/core';

@Injectable()
export abstract class BaseProvider {
    protected abstract get name(): string;
    protected abstract initialize(): void;

    public greet(): string {
        return `Hello from ${this.name}`;
    }
}

Build error:

let BaseProvider = abstract class BaseProvider {
                            ^ Expected a semicolon

Expected: The abstract keyword should be stripped. Abstract methods should also be stripped or replaced with empty stubs.

Environment

  • @oxc-angular/vite: 0.0.17
  • Vite: 8.0.0 (also reproduced with rolldown-vite 7.3.1)
  • Angular: 20.x
  • macOS (Apple Silicon)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Priority

    None yet

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions