michael@0: /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ michael@0: /* This Source Code Form is subject to the terms of the Mozilla Public michael@0: * License, v. 2.0. If a copy of the MPL was not distributed with this michael@0: * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ michael@0: michael@0: michael@0: /** michael@0: File Name: 11.12-3.js michael@0: ECMA Section: 11.12 michael@0: Description: michael@0: michael@0: The grammar for a ConditionalExpression in ECMAScript is a little bit michael@0: different from that in C and Java, which each allow the second michael@0: subexpression to be an Expression but restrict the third expression to michael@0: be a ConditionalExpression. The motivation for this difference in michael@0: ECMAScript is to allow an assignment expression to be governed by either michael@0: arm of a conditional and to eliminate the confusing and fairly useless michael@0: case of a comma expression as the center expression. michael@0: michael@0: Author: christine@netscape.com michael@0: Date: 12 november 1997 michael@0: */ michael@0: michael@0: var SECTION = "11.12-3"; michael@0: var VERSION = "ECMA_1"; michael@0: startTest(); michael@0: writeHeaderToLog( SECTION + " Conditional operator ( ? : )"); michael@0: michael@0: // the following expression should NOT be an error in JS. michael@0: michael@0: new TestCase( SECTION, michael@0: "var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR", michael@0: "PASSED", michael@0: eval("var MYVAR = true ? ('FAIL1', 'PASSED') : 'FAIL2'; MYVAR")); michael@0: michael@0: test(); michael@0: