AI 149620: mkstubs should ignore all the methods/fields/classes with default access.

External bug: http://code.google.com/p/android/issues/detail?id=2806
  BUG=1901455

Automated import of CL 149620
This commit is contained in:
Xavier Ducrohet
2009-06-05 17:06:37 -07:00
committed by The Android Open Source Project
parent c91e5f15ba
commit c3c97d1db3

View File

@@ -26,7 +26,7 @@ import org.objectweb.asm.Opcodes;
/**
* A class visitor that filters out all members (fields, methods and inner classes) that are
* either private or rejected by the {@link Filter}.
* either private, default-access or rejected by the {@link Filter}.
*/
class FilterClassAdapter extends ClassAdapter {
@@ -50,12 +50,12 @@ class FilterClassAdapter extends ClassAdapter {
public void visitEnd() {
super.visitEnd();
}
/**
* Visits a field.
*
*
* {@inheritDoc}
*
*
* Examples:
* name = mArg
* desc = Ljava/Lang/String;
@@ -64,11 +64,11 @@ class FilterClassAdapter extends ClassAdapter {
@Override
public FieldVisitor visitField(int access, String name, String desc,
String signature, Object value) {
// exclude private fields
if ((access & Opcodes.ACC_PRIVATE) != 0) {
// only accept public/protected fields
if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
return null;
}
// filter on field name
String filterName = String.format("%s#%s", mClassName, name);
@@ -76,7 +76,7 @@ class FilterClassAdapter extends ClassAdapter {
System.out.println("- Remove field " + filterName);
return null;
}
// TODO we should produce an error if a filtered desc/signature is being used.
return super.visitField(access, name, desc, signature, value);
@@ -84,9 +84,9 @@ class FilterClassAdapter extends ClassAdapter {
/**
* Visits a method.
*
*
* {@inheritDoc}
*
*
* Examples:
* name = <init>
* desc = ()V
@@ -96,11 +96,11 @@ class FilterClassAdapter extends ClassAdapter {
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] exceptions) {
// exclude private methods
if ((access & Opcodes.ACC_PRIVATE) != 0) {
// only accept public/protected methods
if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
return null;
}
// filter on method name using the non-generic descriptor
String filterName = String.format("%s#%s%s", mClassName, name, desc);
@@ -112,7 +112,7 @@ class FilterClassAdapter extends ClassAdapter {
// filter on method name using the generic signature
if (signature != null) {
filterName = String.format("%s#%s%s", mClassName, name, signature);
if (!mFilter.accept(filterName)) {
System.out.println("- Remove method " + filterName);
return null;
@@ -126,7 +126,7 @@ class FilterClassAdapter extends ClassAdapter {
@Override
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
// TODO produce an error if a filtered annotation type is being used
return super.visitAnnotation(desc, visible);
}
@@ -139,8 +139,8 @@ class FilterClassAdapter extends ClassAdapter {
@Override
public void visitInnerClass(String name, String outerName, String innerName, int access) {
// exclude private methods
if ((access & Opcodes.ACC_PRIVATE) != 0) {
// only accept public/protected inner classes
if ((access & (Opcodes.ACC_PUBLIC | Opcodes.ACC_PROTECTED)) == 0) {
return;
}