[jvm-lang] don't use Enum#valueOf for JvmModifier

This commit is contained in:
Daniil Ovchinnikov
2017-10-10 12:43:35 +03:00
parent 4cb5d2c776
commit 7205129a8e
@@ -1,29 +1,16 @@
/*
* Copyright 2000-2017 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
// Copyright 2000-2017 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
package com.intellij.psi;
import com.intellij.lang.jvm.JvmClassKind;
import com.intellij.lang.jvm.JvmModifier;
import com.intellij.lang.jvm.types.JvmReferenceType;
import com.intellij.openapi.diagnostic.Logger;
import org.jetbrains.annotations.NonNls;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.EnumSet;
import java.util.Map;
import java.util.Set;
import static com.intellij.psi.PsiType.getJavaLangObject;
@@ -32,6 +19,21 @@ import static com.intellij.psi.PsiType.getTypeByName;
class PsiJvmConversionHelper {
private static final Logger LOG = Logger.getInstance(PsiJvmConversionHelper.class);
private static final Map<String, JvmModifier> MODIFIERS = ContainerUtil.<String, JvmModifier>immutableMapBuilder()
.put(PsiModifier.PUBLIC, JvmModifier.PUBLIC)
.put(PsiModifier.PROTECTED, JvmModifier.PROTECTED)
.put(PsiModifier.PRIVATE, JvmModifier.PRIVATE)
.put(PsiModifier.PACKAGE_LOCAL, JvmModifier.PACKAGE_LOCAL)
.put(PsiModifier.STATIC, JvmModifier.STATIC)
.put(PsiModifier.ABSTRACT, JvmModifier.ABSTRACT)
.put(PsiModifier.FINAL, JvmModifier.FINAL)
.put(PsiModifier.NATIVE, JvmModifier.NATIVE)
.put(PsiModifier.SYNCHRONIZED, JvmModifier.SYNCHRONIZED)
.put(PsiModifier.STRICTFP, JvmModifier.STRICTFP)
.put(PsiModifier.TRANSIENT, JvmModifier.TRANSIENT)
.put(PsiModifier.VOLATILE, JvmModifier.VOLATILE)
.put(PsiModifier.TRANSITIVE, JvmModifier.TRANSITIVE)
.build();
@NotNull
static PsiAnnotation[] getListAnnotations(@NotNull PsiModifierListOwner modifierListOwner) {
@@ -42,16 +44,11 @@ class PsiJvmConversionHelper {
@NotNull
static JvmModifier[] getListModifiers(@NotNull PsiModifierListOwner modifierListOwner) {
final Set<JvmModifier> result = EnumSet.noneOf(JvmModifier.class);
for (@NonNls String modifier : PsiModifier.MODIFIERS) {
if (modifierListOwner.hasModifierProperty(modifier)) {
String jvmName = modifier.toUpperCase();
JvmModifier jvmModifier = JvmModifier.valueOf(jvmName);
result.add(jvmModifier);
MODIFIERS.forEach((psi, jvm) -> {
if (modifierListOwner.hasModifierProperty(psi)) {
result.add(jvm);
}
}
if (modifierListOwner.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) {
result.add(JvmModifier.PACKAGE_LOCAL);
}
});
return result.toArray(JvmModifier.EMPTY_ARRAY);
}