>Tish
HomeDocs

ECMA Alignment

How Tish maps to ECMA-262 and test262.

This page summarizes Tish behavior relative to ECMA-262. Each concept has a decision: Follow, Omit, or Simplify.

Types

  • Undefined → Null (Tish uses null only; typeof null returns "null", not "object")
  • Boolean, Number, String, Object — Follow
  • No Symbol, BigInt in MVP

Equality and coercion

  • Strict equality only (===, !==)
  • No loose equality (==)
  • No implicit coercion

Expressions and statements

CategoryDecision
block, break, continue, for, if, return, whileFollow
switch, do-whileFollow
throw, try/catchFollow
addition, array, assignment, callFollow
coalesce (??), conditional (? :)Follow
member, optional-chaining (?.)Follow
class, new, super, thisOmit
async, awaitFollow (simplify)
generatorsOmit
for-inOmit; for-of follows (arrays and strings)

Builtins

BuiltinDecision
Array, Math, String, ObjectFollow (simplify)
JSON (parse, stringify)Follow
consoleFollow (with TISH_LOG_LEVEL)
parseInt, parseFloat, isFinite, isNaNFollow
encodeURI, decodeURIFollow
PromiseFollow (§27.2): constructor, .then, .catch, .finally, resolve, reject, all, race. Host: setTimeout, setInterval, clearTimeout, clearInterval (non-blocking; callbacks run after delay)
Proxy, Reflect, SymbolOmit
RegExpOptional (regex feature)

Tish-specific

  • fn / function — both supported
  • Optional braces (indentation)
  • Tab/space normalized
  • No this, with, eval
  • No varlet/const only

For the full alignment document, see the tish/docs/ecma-alignment.md in the tish repo.