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.

53 lines
1.0 KiB

/*
* Copyright (c) 2018-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
class InnerClass {
synchronized void outerInnerOk(InnerClassA a) {
a.foo();
}
synchronized void bar() {}
synchronized void outerInnerBad(InnerClassA a) {
a.baz();
}
class InnerClassA {
void foo() {
synchronized (InnerClass.this) {
}
}
void outerInnerOk() {
synchronized (InnerClass.this) {
InnerClass.this.bar();
}
}
synchronized void baz() {}
synchronized void innerOuterBad() {
InnerClass.this.bar();
}
// ctrs generate different access paths so test these too
// following should not be flagged
InnerClassA() {
synchronized (InnerClass.this) {
InnerClass.this.bar();
}
}
// following should be flagged with outer_inner_bad()
InnerClassA(Object o) {
synchronized (this) {
InnerClass.this.bar();
}
}
}
}