/** * Copyright (c) 2012-2016 André Bargull * Alle Rechte vorbehalten / All Rights Reserved. Use is subject to license terms. * * <https://github.com/anba/es6draft> */ package com.github.anba.es6draft.runtime.types; import java.util.EnumMap; /** * <h1>6 ECMAScript Data Types and Values</h1><br> * <h2>6.1.5 The Symbol Type</h2> * <ul> * <li>6.1.5.1 Well-Known Symbols * </ul> */ public enum BuiltinSymbol { NONE, // /** * @@hasInstance */ hasInstance, /** * @@isConcatSpreadable */ isConcatSpreadable, /** * @@iterator */ iterator, /** * @@match */ match, /** * @@replace */ replace, /** * @@search */ search, /** * @@species */ species, /** * @@split */ split, /** * @@toPrimitive */ toPrimitive, /** * @@toStringTag */ toStringTag, /** * @@unscopables */ unscopables, /** * @@observable */ observable, /** * @@asyncIterator */ asyncIterator, ; /** * Returns the {@link Symbol} object for this {@link BuiltinSymbol}. * * @return the built-in symbol */ public final Symbol get() { assert this != NONE; return symbols.get(this); } @Override public String toString() { return "Symbol." + name(); } private static final EnumMap<BuiltinSymbol, Symbol> symbols; static { EnumMap<BuiltinSymbol, Symbol> map = new EnumMap<>(BuiltinSymbol.class); for (BuiltinSymbol builtin : values()) { if (builtin != NONE) { String name = "Symbol." + builtin.name(); map.put(builtin, new Symbol(name)); } } symbols = map; } }