Replaced int flags with BitSet in internal API.

This commit is contained in:
Evgeny Gerashchenko
2012-06-08 18:57:14 +04:00
parent 12893cec54
commit c446fa3fc9
7 changed files with 40 additions and 22 deletions
@@ -1597,7 +1597,7 @@ public class JavaDescriptorResolver implements DependencyClassByQualifiedNameRes
}
// TODO: ugly
if ((method.getJetMethod().flags() & JvmStdlibNames.JET_METHOD_FLAG_PROPERTY) != 0) {
if (method.getJetMethod().flags().get(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT)) {
return null;
}
@@ -125,7 +125,7 @@ class JavaDescriptorResolverHelper {
NamedMembers members = getNamedMembers(Name.identifier(propertyName));
// TODO: some java properties too
if ((method.getJetMethod().flags() & JvmStdlibNames.JET_METHOD_FLAG_PROPERTY) != 0) {
if (method.getJetMethod().flags().get(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT)) {
int i = 0;
@@ -167,7 +167,7 @@ class JavaDescriptorResolverHelper {
String propertyName = propertyParseResult.getPropertyName();
NamedMembers members = getNamedMembers(Name.identifier(propertyName));
if ((method.getJetMethod().flags() & JvmStdlibNames.JET_METHOD_FLAG_PROPERTY) != 0) {
if (method.getJetMethod().flags().get(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT)) {
if (method.getParameters().size() == 0) {
// TODO: report error properly
throw new IllegalStateException();
@@ -204,7 +204,7 @@ class JavaDescriptorResolverHelper {
}
}
if ((method.getJetMethod().flags() & JvmStdlibNames.JET_METHOD_FLAG_PROPERTY) == 0) {
if (!method.getJetMethod().flags().get(JvmStdlibNames.JET_METHOD_FLAG_PROPERTY_BIT)) {
NamedMembers namedMembers = getNamedMembers(Name.identifier(method.getName()));
namedMembers.addMethod(method);
}
@@ -48,8 +48,9 @@ public class JvmStdlibNames {
public static final String JET_METHOD_TYPE_PARAMETERS_FIELD = "typeParameters";
public static final String JET_METHOD_PROPERTY_TYPE_FIELD = "propertyType";
public static final int JET_METHOD_FLAGS_DEFAULT = 0;
public static final int JET_METHOD_FLAG_PROPERTY = 1;
public static final int JET_METHOD_FLAGS_DEFAULT_VALUE = 0;
public static final int JET_METHOD_FLAGS_BITS = 1;
public static final int JET_METHOD_FLAG_PROPERTY_BIT = 0;
public static final JvmClassName JET_CONSTRUCTOR = JvmClassName.byFqNameWithoutInnerClasses("jet.runtime.typeinfo.JetConstructor");
@@ -22,6 +22,8 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.resolve.java.JvmStdlibNames;
import java.util.BitSet;
/**
* @author Stepan Koltsov
*/
@@ -31,16 +33,19 @@ public class JetMethodAnnotation extends PsiAnnotationWrapper {
super(psiAnnotation);
}
private int flags;
private boolean flagsInitialized;
public int flags() {
if (!flagsInitialized) {
flags = getIntAttribute(JvmStdlibNames.JET_METHOD_FLAGS_FIELD, -1);
if (flags == -1) {
private BitSet flags = null;
public BitSet flags() {
if (flags == null) {
int flagsValue = getIntAttribute(JvmStdlibNames.JET_METHOD_FLAGS_FIELD, JvmStdlibNames.JET_METHOD_FLAGS_DEFAULT_VALUE);
if (flagsValue == JvmStdlibNames.JET_METHOD_FLAGS_DEFAULT_VALUE) {
// for compatibility
flags = getIntAttribute(JvmStdlibNames.JET_METHOD_KIND_FIELD, JvmStdlibNames.JET_METHOD_FLAGS_DEFAULT);
flagsValue = getIntAttribute(JvmStdlibNames.JET_METHOD_KIND_FIELD, JvmStdlibNames.JET_METHOD_FLAGS_DEFAULT_VALUE);
}
flags = new BitSet(JvmStdlibNames.JET_METHOD_FLAGS_BITS);
for (int bit = 0; bit < JvmStdlibNames.JET_METHOD_FLAGS_BITS; bit++) {
flags.set(bit, (flagsValue & (1 << bit)) != 0);
}
flagsInitialized = true;
}
return flags;
}