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

/**
 * List of words that are not reserved
 *
 * @path ch07/7.6/7.6.1/S7.6.1_A2.js
 * @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

