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.
40 lines
1.4 KiB
40 lines
1.4 KiB
Stub Annotations
|
|
|
|
The annotations in these packages are used to compile
|
|
the stubs. They are mostly identical to the annotations
|
|
in the support library, but
|
|
|
|
(1) There are some annotations here which are not in
|
|
the support library, such as @RecentlyNullable and
|
|
@RecentlyNonNull. These are used *only* in the stubs
|
|
to automatically mark code as recently annotated
|
|
with null/non-null. We do *not* want these annotations
|
|
in the source code; the recent-ness is computed at
|
|
build time and injected into the stubs in place
|
|
of the normal null annotations.
|
|
|
|
(2) There are some annotations in the support library
|
|
that do not apply here, such as @Keep,
|
|
@VisibleForTesting, etc.
|
|
|
|
(3) Only class retention annotations are interesting for
|
|
the stubs; that means for example that we don't
|
|
include @IntDef and @StringDef.
|
|
|
|
(4) We've tweaked the retention of some of the support
|
|
library annotations; some of them were accidentally
|
|
source retention, and here they are class retention.
|
|
|
|
(5) We've tweaked the nullness annotations to include
|
|
TYPE_PARAMETER and TYPE_USE targets, and removed
|
|
package, local variable, annotation type, etc.
|
|
|
|
(6) There are some other differences; for example, the
|
|
@RequiresPermission annotation here has an extra
|
|
"apis" field used for merged historical annotations
|
|
to express the applicable API range.
|
|
|
|
Essentially, this is a curated list of exactly the
|
|
set of annotations we allow injected into the stubs.
|
|
|