Skip to content

Latest commit

 

History

History
133 lines (105 loc) · 3.5 KB

supported_features.md

File metadata and controls

133 lines (105 loc) · 3.5 KB

NOTE: This file is very outdated -- use at your own risk!

Supported Operations

✔️ supported
unknown
‼️ should be supported, unimplemented
will not be supported

Statements and Control Operators

if-true if(true) { e1 } else { e2 } ✔️
if(true) { e1 } ✔️
if-false if(false) { e1 } else { e2 } ✔️
if(false) { e1 } ✔️
while while(e1) { e2 } ✔️
while-false while(false) { e2 } ✔️
throw
try-catch
try-catch-pop
uncaught-exception
try-finally-error
try-finally-break
try-finally-pop
label-break l: { e; break l v; } ✔️
label-break-pop l1: { e; break l2 v; } ✔️
label-pop l: { v }
break-break break l1 (break l2 v)

Objects

object literal {x:1, y:2} ✔️
get field {x:1}.x ✔️
{x:1}["x"] TODO: merge this and ^
get field - not found {x:1}.y -> undefined
get field - proto null {x:1, __proto__: null}.y -> undefined ‼️
get field - proto {x:1, __proto__: l}.y -> (deref l).y ‼️
update field {x:1}.x = 4 ✔️
create field {x:1}.y = 4
delete field delete {x.1}.x ‼️
delete field - not found delete {x.1}.y ‼️

Arrays

Operators

Binary Operators

+ ✔️ TODO: ensure it matches with implicit type conversions
- ✔️
/ ✔️
% ‼️
* ✔️
** ‼️
&
|
>>
>>>
<<
^
==
=== ✔️
!=
!== ✔️
in ‼️
instanceof
> ✔️
< ✔️
>= ✔️
<= ✔️
++ ‼️ NOTE: might get desugared with js-transform
-- ‼️ NOTE: might get desugared with js-transform

Logical Operators

Unary Operators

Keywords

this
instanceof
typeof TODO: ensure all cases are implemented

Type Conversions

Assorted

Prototype-based Objects

Functions as Objects

Local Variables

var ✔️
let ✔️

Global Variables

With Statements