|
1 /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
|
2 /* This Source Code Form is subject to the terms of the Mozilla Public |
|
3 * License, v. 2.0. If a copy of the MPL was not distributed with this |
|
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ |
|
5 |
|
6 |
|
7 /** |
|
8 File Name: expression-001.js |
|
9 Corresponds to: ecma/Expressions/11.12-2-n.js |
|
10 ECMA Section: 11.12 |
|
11 Description: |
|
12 |
|
13 The grammar for a ConditionalExpression in ECMAScript is a little bit |
|
14 different from that in C and Java, which each allow the second |
|
15 subexpression to be an Expression but restrict the third expression to |
|
16 be a ConditionalExpression. The motivation for this difference in |
|
17 ECMAScript is to allow an assignment expression to be governed by either |
|
18 arm of a conditional and to eliminate the confusing and fairly useless |
|
19 case of a comma expression as the center expression. |
|
20 |
|
21 Author: christine@netscape.com |
|
22 Date: 09 september 1998 |
|
23 */ |
|
24 var SECTION = "expression-001"; |
|
25 var VERSION = "JS1_4"; |
|
26 var TITLE = "Conditional operator ( ? : )" |
|
27 startTest(); |
|
28 writeHeaderToLog( SECTION + " " + TITLE ); |
|
29 |
|
30 // the following expression should be an error in JS. |
|
31 |
|
32 var result = "Failed" |
|
33 var exception = "No exception was thrown"; |
|
34 |
|
35 try { |
|
36 eval("var MY_VAR = true ? \"EXPR1\", \"EXPR2\" : \"EXPR3\""); |
|
37 } catch ( e ) { |
|
38 result = "Passed"; |
|
39 exception = e.toString(); |
|
40 } |
|
41 |
|
42 new TestCase( |
|
43 SECTION, |
|
44 "comma expression in a conditional statement "+ |
|
45 "(threw "+ exception +")", |
|
46 "Passed", |
|
47 result ); |
|
48 |
|
49 |
|
50 test(); |