src/share/classes/com/sun/tools/javac/util/Names.java

Thu, 24 May 2018 16:48:51 +0800

author
aoqi
date
Thu, 24 May 2018 16:48:51 +0800
changeset 3295
859dc787b52b
parent 3172
921a7d6ab90d
parent 2525
2eb010b6cb22
permissions
-rw-r--r--

Merge

aoqi@0 1 /*
aoqi@0 2 * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
aoqi@0 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
aoqi@0 4 *
aoqi@0 5 * This code is free software; you can redistribute it and/or modify it
aoqi@0 6 * under the terms of the GNU General Public License version 2 only, as
aoqi@0 7 * published by the Free Software Foundation. Oracle designates this
aoqi@0 8 * particular file as subject to the "Classpath" exception as provided
aoqi@0 9 * by Oracle in the LICENSE file that accompanied this code.
aoqi@0 10 *
aoqi@0 11 * This code is distributed in the hope that it will be useful, but WITHOUT
aoqi@0 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
aoqi@0 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
aoqi@0 14 * version 2 for more details (a copy is included in the LICENSE file that
aoqi@0 15 * accompanied this code).
aoqi@0 16 *
aoqi@0 17 * You should have received a copy of the GNU General Public License version
aoqi@0 18 * 2 along with this work; if not, write to the Free Software Foundation,
aoqi@0 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
aoqi@0 20 *
aoqi@0 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
aoqi@0 22 * or visit www.oracle.com if you need additional information or have any
aoqi@0 23 * questions.
aoqi@0 24 */
aoqi@0 25
aoqi@0 26 package com.sun.tools.javac.util;
aoqi@0 27
aoqi@0 28 /**
aoqi@0 29 * Access to the compiler's name table. STandard names are defined,
aoqi@0 30 * as well as methods to create new names.
aoqi@0 31 *
aoqi@0 32 * <p><b>This is NOT part of any supported API.
aoqi@0 33 * If you write code that depends on this, you do so at your own risk.
aoqi@0 34 * This code and its internal interfaces are subject to change or
aoqi@0 35 * deletion without notice.</b>
aoqi@0 36 */
aoqi@0 37 public class Names {
aoqi@0 38
aoqi@0 39 public static final Context.Key<Names> namesKey = new Context.Key<Names>();
aoqi@0 40
aoqi@0 41 public static Names instance(Context context) {
aoqi@0 42 Names instance = context.get(namesKey);
aoqi@0 43 if (instance == null) {
aoqi@0 44 instance = new Names(context);
aoqi@0 45 context.put(namesKey, instance);
aoqi@0 46 }
aoqi@0 47 return instance;
aoqi@0 48 }
aoqi@0 49
aoqi@0 50 // operators and punctuation
aoqi@0 51 public final Name asterisk;
aoqi@0 52 public final Name comma;
aoqi@0 53 public final Name empty;
aoqi@0 54 public final Name hyphen;
aoqi@0 55 public final Name one;
aoqi@0 56 public final Name period;
aoqi@0 57 public final Name semicolon;
aoqi@0 58 public final Name slash;
aoqi@0 59 public final Name slashequals;
aoqi@0 60
aoqi@0 61 // keywords
aoqi@0 62 public final Name _class;
aoqi@0 63 public final Name _default;
aoqi@0 64 public final Name _super;
aoqi@0 65 public final Name _this;
aoqi@0 66
aoqi@0 67 // field and method names
aoqi@0 68 public final Name _name;
aoqi@0 69 public final Name addSuppressed;
aoqi@0 70 public final Name any;
aoqi@0 71 public final Name append;
aoqi@0 72 public final Name clinit;
aoqi@0 73 public final Name clone;
aoqi@0 74 public final Name close;
aoqi@0 75 public final Name compareTo;
aoqi@0 76 public final Name deserializeLambda;
aoqi@0 77 public final Name desiredAssertionStatus;
aoqi@0 78 public final Name equals;
aoqi@0 79 public final Name error;
aoqi@0 80 public final Name family;
aoqi@0 81 public final Name finalize;
aoqi@0 82 public final Name forName;
aoqi@0 83 public final Name getClass;
aoqi@0 84 public final Name getClassLoader;
aoqi@0 85 public final Name getComponentType;
aoqi@0 86 public final Name getDeclaringClass;
aoqi@0 87 public final Name getMessage;
aoqi@0 88 public final Name hasNext;
aoqi@0 89 public final Name hashCode;
aoqi@0 90 public final Name init;
aoqi@0 91 public final Name initCause;
aoqi@0 92 public final Name iterator;
aoqi@0 93 public final Name length;
aoqi@0 94 public final Name next;
aoqi@0 95 public final Name ordinal;
aoqi@0 96 public final Name serialVersionUID;
aoqi@0 97 public final Name toString;
aoqi@0 98 public final Name value;
aoqi@0 99 public final Name valueOf;
aoqi@0 100 public final Name values;
aoqi@0 101
aoqi@0 102 // class names
aoqi@0 103 public final Name java_io_Serializable;
aoqi@0 104 public final Name java_lang_AutoCloseable;
aoqi@0 105 public final Name java_lang_Class;
aoqi@0 106 public final Name java_lang_Cloneable;
aoqi@0 107 public final Name java_lang_Enum;
aoqi@0 108 public final Name java_lang_Object;
aoqi@0 109 public final Name java_lang_invoke_MethodHandle;
aoqi@0 110
aoqi@0 111 // names of builtin classes
aoqi@0 112 public final Name Array;
aoqi@0 113 public final Name Bound;
aoqi@0 114 public final Name Method;
aoqi@0 115
aoqi@0 116 // package names
aoqi@0 117 public final Name java_lang;
aoqi@0 118
aoqi@0 119 // attribute names
aoqi@0 120 public final Name Annotation;
aoqi@0 121 public final Name AnnotationDefault;
aoqi@0 122 public final Name BootstrapMethods;
aoqi@0 123 public final Name Bridge;
aoqi@0 124 public final Name CharacterRangeTable;
aoqi@0 125 public final Name Code;
aoqi@0 126 public final Name CompilationID;
aoqi@0 127 public final Name ConstantValue;
aoqi@0 128 public final Name Deprecated;
aoqi@0 129 public final Name EnclosingMethod;
aoqi@0 130 public final Name Enum;
aoqi@0 131 public final Name Exceptions;
aoqi@0 132 public final Name InnerClasses;
aoqi@0 133 public final Name LineNumberTable;
aoqi@0 134 public final Name LocalVariableTable;
aoqi@0 135 public final Name LocalVariableTypeTable;
aoqi@0 136 public final Name MethodParameters;
aoqi@0 137 public final Name RuntimeInvisibleAnnotations;
aoqi@0 138 public final Name RuntimeInvisibleParameterAnnotations;
aoqi@0 139 public final Name RuntimeInvisibleTypeAnnotations;
aoqi@0 140 public final Name RuntimeVisibleAnnotations;
aoqi@0 141 public final Name RuntimeVisibleParameterAnnotations;
aoqi@0 142 public final Name RuntimeVisibleTypeAnnotations;
aoqi@0 143 public final Name Signature;
aoqi@0 144 public final Name SourceFile;
aoqi@0 145 public final Name SourceID;
aoqi@0 146 public final Name StackMap;
aoqi@0 147 public final Name StackMapTable;
aoqi@0 148 public final Name Synthetic;
aoqi@0 149 public final Name Value;
aoqi@0 150 public final Name Varargs;
aoqi@0 151
aoqi@0 152 // members of java.lang.annotation.ElementType
aoqi@0 153 public final Name ANNOTATION_TYPE;
aoqi@0 154 public final Name CONSTRUCTOR;
aoqi@0 155 public final Name FIELD;
aoqi@0 156 public final Name LOCAL_VARIABLE;
aoqi@0 157 public final Name METHOD;
aoqi@0 158 public final Name PACKAGE;
aoqi@0 159 public final Name PARAMETER;
aoqi@0 160 public final Name TYPE;
aoqi@0 161 public final Name TYPE_PARAMETER;
aoqi@0 162 public final Name TYPE_USE;
aoqi@0 163
aoqi@0 164 // members of java.lang.annotation.RetentionPolicy
aoqi@0 165 public final Name CLASS;
aoqi@0 166 public final Name RUNTIME;
aoqi@0 167 public final Name SOURCE;
aoqi@0 168
aoqi@0 169 // other identifiers
aoqi@0 170 public final Name T;
aoqi@0 171 public final Name deprecated;
aoqi@0 172 public final Name ex;
aoqi@0 173 public final Name package_info;
aoqi@0 174
aoqi@0 175 //lambda-related
aoqi@0 176 public final Name lambda;
aoqi@0 177 public final Name metafactory;
aoqi@0 178 public final Name altMetafactory;
sadayapalam@3172 179 public final Name dollarThis;
aoqi@0 180
aoqi@0 181 public final Name.Table table;
aoqi@0 182
aoqi@0 183 public Names(Context context) {
aoqi@0 184 Options options = Options.instance(context);
aoqi@0 185 table = createTable(options);
aoqi@0 186
aoqi@0 187 // operators and punctuation
aoqi@0 188 asterisk = fromString("*");
aoqi@0 189 comma = fromString(",");
aoqi@0 190 empty = fromString("");
aoqi@0 191 hyphen = fromString("-");
aoqi@0 192 one = fromString("1");
aoqi@0 193 period = fromString(".");
aoqi@0 194 semicolon = fromString(";");
aoqi@0 195 slash = fromString("/");
aoqi@0 196 slashequals = fromString("/=");
aoqi@0 197
aoqi@0 198 // keywords
aoqi@0 199 _class = fromString("class");
aoqi@0 200 _default = fromString("default");
aoqi@0 201 _super = fromString("super");
aoqi@0 202 _this = fromString("this");
aoqi@0 203
aoqi@0 204 // field and method names
aoqi@0 205 _name = fromString("name");
aoqi@0 206 addSuppressed = fromString("addSuppressed");
aoqi@0 207 any = fromString("<any>");
aoqi@0 208 append = fromString("append");
aoqi@0 209 clinit = fromString("<clinit>");
aoqi@0 210 clone = fromString("clone");
aoqi@0 211 close = fromString("close");
aoqi@0 212 compareTo = fromString("compareTo");
aoqi@0 213 deserializeLambda = fromString("$deserializeLambda$");
aoqi@0 214 desiredAssertionStatus = fromString("desiredAssertionStatus");
aoqi@0 215 equals = fromString("equals");
aoqi@0 216 error = fromString("<error>");
aoqi@0 217 family = fromString("family");
aoqi@0 218 finalize = fromString("finalize");
aoqi@0 219 forName = fromString("forName");
aoqi@0 220 getClass = fromString("getClass");
aoqi@0 221 getClassLoader = fromString("getClassLoader");
aoqi@0 222 getComponentType = fromString("getComponentType");
aoqi@0 223 getDeclaringClass = fromString("getDeclaringClass");
aoqi@0 224 getMessage = fromString("getMessage");
aoqi@0 225 hasNext = fromString("hasNext");
aoqi@0 226 hashCode = fromString("hashCode");
aoqi@0 227 init = fromString("<init>");
aoqi@0 228 initCause = fromString("initCause");
aoqi@0 229 iterator = fromString("iterator");
aoqi@0 230 length = fromString("length");
aoqi@0 231 next = fromString("next");
aoqi@0 232 ordinal = fromString("ordinal");
aoqi@0 233 serialVersionUID = fromString("serialVersionUID");
aoqi@0 234 toString = fromString("toString");
aoqi@0 235 value = fromString("value");
aoqi@0 236 valueOf = fromString("valueOf");
aoqi@0 237 values = fromString("values");
sadayapalam@3172 238 dollarThis = fromString("$this");
aoqi@0 239
aoqi@0 240 // class names
aoqi@0 241 java_io_Serializable = fromString("java.io.Serializable");
aoqi@0 242 java_lang_AutoCloseable = fromString("java.lang.AutoCloseable");
aoqi@0 243 java_lang_Class = fromString("java.lang.Class");
aoqi@0 244 java_lang_Cloneable = fromString("java.lang.Cloneable");
aoqi@0 245 java_lang_Enum = fromString("java.lang.Enum");
aoqi@0 246 java_lang_Object = fromString("java.lang.Object");
aoqi@0 247 java_lang_invoke_MethodHandle = fromString("java.lang.invoke.MethodHandle");
aoqi@0 248
aoqi@0 249 // names of builtin classes
aoqi@0 250 Array = fromString("Array");
aoqi@0 251 Bound = fromString("Bound");
aoqi@0 252 Method = fromString("Method");
aoqi@0 253
aoqi@0 254 // package names
aoqi@0 255 java_lang = fromString("java.lang");
aoqi@0 256
aoqi@0 257 // attribute names
aoqi@0 258 Annotation = fromString("Annotation");
aoqi@0 259 AnnotationDefault = fromString("AnnotationDefault");
aoqi@0 260 BootstrapMethods = fromString("BootstrapMethods");
aoqi@0 261 Bridge = fromString("Bridge");
aoqi@0 262 CharacterRangeTable = fromString("CharacterRangeTable");
aoqi@0 263 Code = fromString("Code");
aoqi@0 264 CompilationID = fromString("CompilationID");
aoqi@0 265 ConstantValue = fromString("ConstantValue");
aoqi@0 266 Deprecated = fromString("Deprecated");
aoqi@0 267 EnclosingMethod = fromString("EnclosingMethod");
aoqi@0 268 Enum = fromString("Enum");
aoqi@0 269 Exceptions = fromString("Exceptions");
aoqi@0 270 InnerClasses = fromString("InnerClasses");
aoqi@0 271 LineNumberTable = fromString("LineNumberTable");
aoqi@0 272 LocalVariableTable = fromString("LocalVariableTable");
aoqi@0 273 LocalVariableTypeTable = fromString("LocalVariableTypeTable");
aoqi@0 274 MethodParameters = fromString("MethodParameters");
aoqi@0 275 RuntimeInvisibleAnnotations = fromString("RuntimeInvisibleAnnotations");
aoqi@0 276 RuntimeInvisibleParameterAnnotations = fromString("RuntimeInvisibleParameterAnnotations");
aoqi@0 277 RuntimeInvisibleTypeAnnotations = fromString("RuntimeInvisibleTypeAnnotations");
aoqi@0 278 RuntimeVisibleAnnotations = fromString("RuntimeVisibleAnnotations");
aoqi@0 279 RuntimeVisibleParameterAnnotations = fromString("RuntimeVisibleParameterAnnotations");
aoqi@0 280 RuntimeVisibleTypeAnnotations = fromString("RuntimeVisibleTypeAnnotations");
aoqi@0 281 Signature = fromString("Signature");
aoqi@0 282 SourceFile = fromString("SourceFile");
aoqi@0 283 SourceID = fromString("SourceID");
aoqi@0 284 StackMap = fromString("StackMap");
aoqi@0 285 StackMapTable = fromString("StackMapTable");
aoqi@0 286 Synthetic = fromString("Synthetic");
aoqi@0 287 Value = fromString("Value");
aoqi@0 288 Varargs = fromString("Varargs");
aoqi@0 289
aoqi@0 290 // members of java.lang.annotation.ElementType
aoqi@0 291 ANNOTATION_TYPE = fromString("ANNOTATION_TYPE");
aoqi@0 292 CONSTRUCTOR = fromString("CONSTRUCTOR");
aoqi@0 293 FIELD = fromString("FIELD");
aoqi@0 294 LOCAL_VARIABLE = fromString("LOCAL_VARIABLE");
aoqi@0 295 METHOD = fromString("METHOD");
aoqi@0 296 PACKAGE = fromString("PACKAGE");
aoqi@0 297 PARAMETER = fromString("PARAMETER");
aoqi@0 298 TYPE = fromString("TYPE");
aoqi@0 299 TYPE_PARAMETER = fromString("TYPE_PARAMETER");
aoqi@0 300 TYPE_USE = fromString("TYPE_USE");
aoqi@0 301
aoqi@0 302 // members of java.lang.annotation.RetentionPolicy
aoqi@0 303 CLASS = fromString("CLASS");
aoqi@0 304 RUNTIME = fromString("RUNTIME");
aoqi@0 305 SOURCE = fromString("SOURCE");
aoqi@0 306
aoqi@0 307 // other identifiers
aoqi@0 308 T = fromString("T");
aoqi@0 309 deprecated = fromString("deprecated");
aoqi@0 310 ex = fromString("ex");
aoqi@0 311 package_info = fromString("package-info");
aoqi@0 312
aoqi@0 313 //lambda-related
aoqi@0 314 lambda = fromString("lambda$");
aoqi@0 315 metafactory = fromString("metafactory");
aoqi@0 316 altMetafactory = fromString("altMetafactory");
aoqi@0 317 }
aoqi@0 318
aoqi@0 319 protected Name.Table createTable(Options options) {
aoqi@0 320 boolean useUnsharedTable = options.isSet("useUnsharedTable");
aoqi@0 321 if (useUnsharedTable)
aoqi@0 322 return new UnsharedNameTable(this);
aoqi@0 323 else
aoqi@0 324 return new SharedNameTable(this);
aoqi@0 325 }
aoqi@0 326
aoqi@0 327 public void dispose() {
aoqi@0 328 table.dispose();
aoqi@0 329 }
aoqi@0 330
aoqi@0 331 public Name fromChars(char[] cs, int start, int len) {
aoqi@0 332 return table.fromChars(cs, start, len);
aoqi@0 333 }
aoqi@0 334
aoqi@0 335 public Name fromString(String s) {
aoqi@0 336 return table.fromString(s);
aoqi@0 337 }
aoqi@0 338
aoqi@0 339 public Name fromUtf(byte[] cs) {
aoqi@0 340 return table.fromUtf(cs);
aoqi@0 341 }
aoqi@0 342
aoqi@0 343 public Name fromUtf(byte[] cs, int start, int len) {
aoqi@0 344 return table.fromUtf(cs, start, len);
aoqi@0 345 }
aoqi@0 346 }

mercurial