generated from tc39/template-for-proposals
-
Notifications
You must be signed in to change notification settings - Fork 1
/
spec.emu
40 lines (37 loc) · 1.38 KB
/
spec.emu
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
<!doctype html>
<meta charset="utf8">
<link rel="stylesheet" href="./spec.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.4/styles/github.min.css">
<script src="./spec.js"></script>
<pre class="metadata">
title: Non-nullish operator
stage: 0
contributors: clemdee
</pre>
<emu-clause id="sec-unary-expression">
<h1>This is an emu-clause</h1>
<h2>Syntax</h2>
<emu-grammar type="definition">
UnaryExpression[Yield, Await] :
UpdateExpression[?Yield, ?Await]
`delete` UnaryExpression[?Yield, ?Await]
`void` UnaryExpression[?Yield, ?Await]
`typeof` UnaryExpression[?Yield, ?Await]
`+` UnaryExpression[?Yield, ?Await]
`-` UnaryExpression[?Yield, ?Await]
`~` UnaryExpression[?Yield, ?Await]
`!` UnaryExpression[?Yield, ?Await]
<ins>`?` UnaryExpression[?Yield, ?Await]</ins>
[+Await] AwaitExpression[?Yield]
</emu-grammar>
</emu-clause>
<emu-clause id="sec-non-nullish-operator-runtime-semantic-evaluation">
<h1>Runtime semantics: Evaluation</h1>
<emu-grammar><ins>UnaryExpression : ? UnaryExpression</ins></emu-grammar>
<emu-alg>
1. <ins>Let _expr_ be the result of evaluating |UnaryExpression|.</ins>
1. <ins>Let _oldValue_ be ? GetValue(_expr_).</ins>
1. <ins>If _oldValue_ is *undefined* or *null*, return *false*.</ins>
1. <ins>Return *true*.</ins>
</emu-alg>
</emu-clause>