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.

72 lines
2.2 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.nullsafe;
import android.annotation.SuppressLint;
import javax.annotation.Nullable;
public class SyntheticErrorSuppressions {
static class Fragment {
@SuppressLint("eradicate-return-over-annotated")
@Nullable
public static Object getContext() {
return new Object();
}
public static void setContext(final Object context) {}
}
static class ClassWithSyntheticCode {
@Nullable private Object $ul_fieldNullable;
private Object $ul_fieldNotNull;
private Object _UL__ULSEP__fieldNotNull;
// This method contains $ which is *extremely* rarely used in user code, but
// used extensively in autogenerated code, therefore is good marker.
private static void $ul_iAmAutogen(
final ClassWithSyntheticCode instance, final Object context) {}
// Anothe example of autogen'd code
private static void _UL_iAmAutogen(
final ClassWithSyntheticCode instance, final Object context) {}
@Nullable
private Object $ul_iAmNullableAutogen() {
return $ul_fieldNullable;
}
public void passingIncorrectParamToSyntheticMethod_OK() {
$ul_iAmAutogen(this, Fragment.getContext());
_UL_iAmAutogen(this, Fragment.getContext());
}
public void assigningAnythingToSyntheticField_OK() {
$ul_fieldNotNull = null;
_UL__ULSEP__fieldNotNull = null;
}
// Following cases are hard to support since synthetic code can be a part of
// a complex expression, and we need some more sophisticated mechanisms to
// handle that. On the bright side, this is not something that happens often
// in the wild.
public void passingSyntheticParamToAnyMethod_OK_FP() {
Fragment.setContext($ul_fieldNullable);
Fragment.setContext(_UL__ULSEP__fieldNotNull);
}
public String dereferencingSyntheticNullableField_OK_FP() {
return $ul_fieldNullable.toString();
}
public String dereferencingNullableSyntheticMethodCall_OK_FP() {
return $ul_iAmNullableAutogen().toString();
}
}
}