Skip to content

Support the TC39 pipeline operator #1015

Description

@frostney

Summary

Implement the Stage 2 TC39 proposal: https://github.com/tc39/proposal-pipeline-operator

Implement the current proposal exactly: topic syntax, precedence, associativity, early errors, evaluation order, and await/yield interactions.

Why

This proposal fits GocciaScript's modern ECMAScript surface and the 0.13.0 proposal roadmap. It should extend the engine's existing architecture rather than arrive as a userland shim.

Current behavior

No pipeline expression or topic-reference syntax exists.

Expected behavior

Implement the current proposal exactly: topic syntax, precedence, associativity, early errors, evaluation order, and await/yield interactions.

Scope notes

Treat the live proposal as authoritative; do not support legacy variants. Add dedicated AST/bytecode lowering after #875, evaluating each stage once and preserving suspension/scopes. Cover arrows, calls, optional chains, ASI adjacency, docs, formatting, and tests. Additive syntax: no flag.

Related bytecode roadmap: #871 and #875. Update the relevant language/built-in documentation and Goccia proposal inventory. Use the proposal repository and its current specification at implementation time; add focused project tests and matching pinned Test262/proposal coverage without regressions.

Acceptance criteria

  • Parser/API surface, descriptors, evaluation order, errors, and observable protocol behavior match the current proposal.
  • Implementation uses the identified shared engine seam without a duplicate compatibility shim.
  • Focused positive, negative, abrupt-completion, and edge-case tests cover the proposal.
  • Relevant project suites, pinned Test262 cases, formatting, and documentation checks pass.

Metadata

Metadata

Assignees

No one assigned

    Labels

    engineTGocciaEngine: language semantics, ECMAScript built-ins, parser, interpreter, bytecode VMnew featureNew feature or requestspec complianceMismatch against official JavaScript/TypeScript specification

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions