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
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);
|
|
}
|
|
}
|
|
}
|