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

/*---
info: List of words that are not reserved
es5id: 7.6.1_A2
description: Try assign 1 for not reserved words
---*/

// a
var and = 1;
var and_eq = 1;
var as = 1;
var asm = 1;
var assert = 1;
var auto = 1;
// b
var base = 1;
var bitand = 1;
var bitor = 1;
var bool = 1;
var byvalue = 1;
// c
var checked = 1;
var clone = 1;
var comment = 1;
var compl = 1;
var const_cast = 1;
// d
var decimal = 1;
var delegate = 1;
var dynamic_cast = 1;
// e
var explicit = 1;
var extern = 1;
var equals = 1;
var event = 1;
// f
var finalize = 1;
var fixed = 1;
var friend = 1;
var foreach = 1;
var future = 1;
// g
var getClass = 1;
var generic = 1;
// h
var hashCode = 1;
// i
var implicit = 1;
var infinity = 1;
var inline = 1;
var inner = 1;
var internal = 1;
var is = 1;
// j
// k
// l
var lock = 1;
// m
var mutable = 1;
// n
var namespace = 1;
var not = 1;
var notify = 1;
var notifyAll = 1;
var not_eq = 1;
// o
var object = 1;
var operator = 1;
var or = 1;
var or_eq = 1;
var out = 1;
var outer = 1;
var override = 1;
// p
var params = 1;
// q
// r
var readonly = 1;
var reinterpret_cast = 1;
var ref = 1;
var register = 1;

// s
var sbyte = 1;
var signed = 1;
var sizeof = 1;
var stackalloc = 1;
var static_cast = 1;
var string = 1;
var strictfp = 1;
var struct = 1;
// t
var template = 1;
var toString = 1;
var typedef = 1;
var typeid = 1;
// u
var uint = 1;
var unchecked = 1;
var undefiend = 1;
var union = 1;
var unsafe = 1;
var unsigned = 1;
var use = 1;
var using = 1;
var ushort = 1;
// v
var valueOf = 1;
var virtual = 1;
// w
var wait = 1;
var wchar_t = 1;
// x
var xor = 1;
var xor_eq = 1;
// y
// z
