From 7205129a8e58407ec08bc39c71f93a8bb15ceef8 Mon Sep 17 00:00:00 2001 From: Daniil Ovchinnikov Date: Tue, 10 Oct 2017 12:42:18 +0300 Subject: [PATCH] [jvm-lang] don't use Enum#valueOf for JvmModifier --- .../intellij/psi/PsiJvmConversionHelper.java | 47 +++++++++---------- 1 file changed, 22 insertions(+), 25 deletions(-) diff --git a/java/java-psi-api/src/com/intellij/psi/PsiJvmConversionHelper.java b/java/java-psi-api/src/com/intellij/psi/PsiJvmConversionHelper.java index 370045da6369..9465f38d5ecc 100644 --- a/java/java-psi-api/src/com/intellij/psi/PsiJvmConversionHelper.java +++ b/java/java-psi-api/src/com/intellij/psi/PsiJvmConversionHelper.java @@ -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 MODIFIERS = ContainerUtil.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 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); }