diff --git a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassfileAnalyzer.java b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassfileAnalyzer.java index a67fa2563769..2b11ac6bd546 100644 --- a/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassfileAnalyzer.java +++ b/jps/jps-builders/src/org/jetbrains/jps/builders/java/dependencyView/ClassfileAnalyzer.java @@ -569,24 +569,8 @@ class ClassfileAnalyzer { // do not register access to own class members final String memberName = handle.getName(); final String memberDescriptor = handle.getDesc(); - if (isFieldAccessHandle(handle)) { - final int tag = handle.getTag(); - int opCode; - if (tag == Opcodes.H_GETFIELD) { - opCode = Opcodes.GETFIELD; - } - else if (tag == Opcodes.H_GETSTATIC) { - opCode = Opcodes.GETSTATIC; - } - else if (tag == Opcodes.H_PUTFIELD) { - opCode = Opcodes.PUTFIELD; - } - else if (tag == Opcodes.H_PUTSTATIC) { - opCode = Opcodes.PUTSTATIC; - } - else { - opCode = Opcodes.H_GETFIELD; - } + final int opCode = getFieldAccessOpcode(handle); + if (opCode > 0) { registerFieldUsage(opCode, memberOwner, memberName, memberDescriptor); } else { @@ -637,9 +621,18 @@ class ClassfileAnalyzer { }; } - private boolean isFieldAccessHandle(Handle handle) { - final int tag = handle.getTag(); - return tag == Opcodes.H_GETFIELD || tag == Opcodes.H_GETSTATIC || tag == Opcodes.H_PUTFIELD || tag == Opcodes.H_PUTSTATIC; + /** + * @param handle + * @return corresponding field access opcode or -1 if the handle does not represent field access handle + */ + private int getFieldAccessOpcode(Handle handle) { + switch (handle.getTag()) { + case Opcodes.H_GETFIELD: return Opcodes.GETFIELD; + case Opcodes.H_GETSTATIC: return Opcodes.GETSTATIC; + case Opcodes.H_PUTFIELD: return Opcodes.PUTFIELD; + case Opcodes.H_PUTSTATIC: return Opcodes.PUTSTATIC; + default: return -1; + } } @Override diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java b/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java index f8b4e51ccd52..a611784d7e74 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/IncrementalTestCase.java @@ -214,20 +214,6 @@ public abstract class IncrementalTestCase extends JpsBuildTestCase { module.addSourceRoot(getUrl(testRootRelativePath), JavaSourceRootType.TEST_SOURCE); } - protected static boolean isRunningOnAtLeastJava(int javaVersion) { - final String versionString = System.getProperty("java.version"); - final String prefix = "1."; - final int startIndex = versionString.startsWith(prefix) ? prefix.length() : 0; - final int dotIndex = versionString.indexOf('.', startIndex); - try { - int version = Integer.parseInt(versionString.substring(startIndex, dotIndex > startIndex? dotIndex : versionString.length())); - return version >= javaVersion; - } - catch (NumberFormatException ignored) { - } - return false; - } - private static class StringProjectBuilderLogger extends ProjectBuilderLoggerBase { private final String myRoot; private StringBuilder myLog; diff --git a/jps/jps-builders/testSrc/org/jetbrains/ether/MethodPropertyTest.java b/jps/jps-builders/testSrc/org/jetbrains/ether/MethodPropertyTest.java index 839effbe7ac8..c890dc497b33 100644 --- a/jps/jps-builders/testSrc/org/jetbrains/ether/MethodPropertyTest.java +++ b/jps/jps-builders/testSrc/org/jetbrains/ether/MethodPropertyTest.java @@ -15,6 +15,8 @@ */ package org.jetbrains.ether; +import com.intellij.openapi.util.SystemInfo; + /** * @author: db * Date: 05.10.11 @@ -33,7 +35,7 @@ public class MethodPropertyTest extends IncrementalTestCase { } public void testChangeMethodRefReturnType() throws Exception { - if (isRunningOnAtLeastJava(8)) { + if (SystemInfo.isJavaVersionAtLeast("1.8")) { doTest(); } else { @@ -42,7 +44,7 @@ public class MethodPropertyTest extends IncrementalTestCase { } public void testChangeLambdaTargetReturnType() throws Exception { - if (isRunningOnAtLeastJava(8)) { + if (SystemInfo.isJavaVersionAtLeast("1.8")) { doTest(); } else { @@ -51,7 +53,7 @@ public class MethodPropertyTest extends IncrementalTestCase { } public void testChangeSAMMethodSignature() throws Exception { - if (isRunningOnAtLeastJava(8)) { + if (SystemInfo.isJavaVersionAtLeast("1.8")) { doTest(); } else { @@ -60,7 +62,7 @@ public class MethodPropertyTest extends IncrementalTestCase { } public void testChangeLambdaSAMMethodSignature() throws Exception { - if (isRunningOnAtLeastJava(8)) { + if (SystemInfo.isJavaVersionAtLeast("1.8")) { doTest(); } else {