You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

99 lines
1.9 KiB

/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package codetoanalyze.java.checkers;
import android.support.annotation.UiThread;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface OnBind {}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface OnEvent {}
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface OnMount {}
@UiThread
class AllMethodsOnUiThread {
int f;
void foo_UIThread_constant() {
f = 0;
}
int bar_UIThread_linear() {
for (int i = 0; i < f; i++) {
foo_UIThread_constant();
}
return f;
}
}
class ExtendsClassOnUiThread extends AllMethodsOnUiThread {
@Override
void foo_UIThread_constant() {
f = 9;
}
@Override
int bar_UIThread_linear() {
return super.bar_UIThread_linear();
}
}
class UIAnnotationTest {
// NOT All annotations that start with "On" are on the main thread
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.CLASS)
@interface OnXYZ {}
class WeirdAnnotation {
int f;
@OnXYZ
void foo_linear() {
for (int i = 0; i < f; i++) {}
}
}
class Annotations {
@UiThread
public void loop_UIThread_linear(int x) {
for (int i = 0; i < x; i++) {}
}
public void constant() {
// not on UI thread
}
public void loop_linear(int x) {
for (int i = 0; i < x; i++) {}
}
// anything annotated with OnEvent is modeled as running on the UIThread
@OnEvent
public void onClick_linear(int x) {
for (int i = 0; i < x; i++) {}
}
@OnBind
public void onBindMethod_linear(int x) {
loop_linear(x);
}
}
}