// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    The production ExpressionStatement : [lookahead \notin {{, function}] Expression; is evaluated as follows:
    1. Evaluate Expression.
    2. Call GetValue(Result(1)).
    3. Return (normal, Result(2), empty)
es5id: 12.4_A2_T2
description: Checking by using eval(eval(x), where x is any string)
---*/

var x, __evaluated;

x="5+1|0===0";

__evaluated = eval(x);

//////////////////////////////////////////////////////////////////////////////
//CHECK#1
if (__evaluated !== 7) {
	$ERROR('#1: __evaluated === 7. Actual:  __evaluated ==='+ __evaluated  );
}
//
//////////////////////////////////////////////////////////////////////////////

__evaluated = eval("2*"+x+">-1");

//////////////////////////////////////////////////////////////////////////////
//CHECK#2
if (__evaluated !== 11) {
	$ERROR('#2: __evaluated === 11. Actual:  __evaluated ==='+ __evaluated  );
}
//
//////////////////////////////////////////////////////////////////////////////
