• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Changelog
2=========
3Version 0.10.22
4---------------
5IMPORTANT: The support for JDK 8 is deprecated in this release and will be removed in
6    an upcoming release.
7
8* Fix bug with implicit equals() methods in interfaces (#898)
9* Fix crash with raw types in overrides in JSpecify mode (#899)
10* Docs fix: Update instructions for Android and our sample app (#900)
11
12Version 0.10.21
13---------------
14IMPORTANT: This release fixes a crash when running against <2.24.0 release of
15    Error Prone (see #894) introduced in NullAway v0.10.20 and another crash related to
16    Checker Framework (see #895) introduced in NullAway v0.10.19.
17
18* Fix backwards-incompatible calls to ASTHelpers.hasDirectAnnotationWithSimpleName (#894)
19* Downgrade to Checker Framework 3.40.0 (#895)
20
21Version 0.10.20
22---------------
23* Fix JSpecify support on JDK 21 (#869)
24* Build / CI tooling upgrades for NullAway itself:
25  - Update to WALA 1.6.3 (#887)
26  - Update to Error Prone 2.24.1 (#888)
27
28Version 0.10.19
29---------------
30* Update to Checker Framework 3.41.0 (#873)
31* Extend library models to mark fields as nullable (#878)
32  - Main use case is NullAwayAnnotator
33* Fix jarinfer cli output determinism (#884)
34* Add support for AssertJ as() and describedAs() in AssertionHandler (#885)
35* Support for JSpecify's 0.3.0 annotation [experimental]
36  - JSpecify: In generics code, get rid of checks for ClassType (#863)
37* Update some dependencies (#883)
38
39Version 0.10.18
40---------------
41* Fix assertion check for structure of enhanced-for loop over a Map keySet (#868)
42
43Version 0.10.17
44---------------
45* Fix bug with computing direct type use annotations on parameters (#864)
46* Model Apache Flink's RichFunction.open as an @Initializer method (#862)
47* Support for JSpecify's 0.3.0 annotation [experimental]
48  - JSpecify: adding com.google.common to annotated packages in build.gradle (#857)
49  - JSpecify: handling the return of a diamond operator anonymous object method caller (#858)
50  - Create com.uber.nullaway.generics package (#855)
51  - Clarifications and small fixes for checking JSpecify @Nullable annotation (#859)
52  - Apply minor cleanups suggested by IntelliJ in generics code (#860)
53
54Version 0.10.16
55---------------
56NOTE: Maven Central signing key rotated for this release following a revocation.
57
58* Minor cleanup in AccessPathElement (#851)
59* Support for JSpecify's 0.3.0 annotation [experimental]
60  - JSpecify: handle return types of method references in Java Generics (#847)
61  - JSpecify: handle Nullability for lambda expression parameters for Generic Types (#852)
62  - JSpecify: Modify Array Type Use Annotation Syntax (#850)
63  - JSpecify: handle Nullability for return types of lambda expressions for Generic Types (#854)
64* Build / CI tooling for NullAway itself:
65  - Update to Gradle 8.4 and Error Prone 2.23.0 (#849)
66
67Version 0.10.15
68---------------
69* [IMPORTANT] Update minimum Error Prone version and Guava version (#843)
70  NullAway now requires Error Prone 2.10.0 or later
71* Add Spring mock/testing annotations to excluded field annotation list (#757)
72* Update to Checker Framework 3.39.0 (#839) [Support for JDK 21 constructs]
73* Support for JSpecify's 0.3.0 annotation [experimental]
74  - Properly check generic method overriding in explicitly-typed anonymous classes (#808)
75  - JSpecify: handle incorrect method parameter nullability for method reference (#845)
76  - JSpecify: initial handling of generic enclosing types for inner classes (#837)
77* Build / CI tooling for NullAway itself:
78  - Update Gradle and a couple of plugin versions (#832)
79  - Run recent JDK tests on JDK 21 (#834)
80  - Fix which JDKs are installed on CI (#835)
81  - Update to Error Prone 2.22.0 (#833)
82  - Ignore code coverage for method executed non-deterministically in tests (#838 and #844)
83  - Build NullAway with JSpecify mode enabled (#841)
84
85Version 0.10.14
86---------------
87IMPORTANT: This version introduces EXPERIMENTAL JDK21 support.
88* Bump Checker Framework dependency to 3.38.0 (#819)
89  - Note: Not just an internal implementation change. Needed to support JDK 21!
90* Treat parameter of generated Record.equals() methods as @Nullable (#825)
91* Build / CI tooling for NullAway itself:
92  - Fixes Codecov Report Expired error (#821)
93  - Updated Readme.md with Codecov link (#823)
94  - Remove ASM-related hack in build config (#824)
95  - Run tests on JDK 21 (#826)
96
97Version 0.10.13
98---------------
99* Allow library models to define custom stream classes (#807)
100* Avoid suggesting castToNonNull fixes in certain cases (#799)
101* Ensure castToNonNull insertion/removal suggested fixes do not remove comments (#815)
102* Support for JSpecify's 0.3.0 annotation [experimental]
103  - Generics checks for method overriding (#755)
104  - Make GenericsChecks methods static (#805)
105  - Add visitors for handling different types in generic type invariance check (#806)
106* Build / CI tooling for NullAway itself:
107  - Bump versions for some dependencies (#800)
108  - Update to WALA 1.6.2 (#798)
109  - Update to Error Prone 2.21.1 (#797)
110  - Enable contract checking when building NullAway (#802)
111  - Bump Error Prone Gradle Plugin version (#804)
112  - Modify JMH Benchmark Workflow For Shellcheck (#813)
113  - Bump gradle maven publish plugin from 0.21.0 to 0.25.3 (#810)
114  - Use Spotless to enforce consistent formatting for Gradle build scripts (#809)
115  - Remove unnecessary compile dependence for jar-infer-cli (#816)
116  - Added Codecov to CI Pipeline (#820)
117
118Version 0.10.12
119---------------
120Note: This is the first release built with Java 11. In particular, running
121    JarInfer now requires a JDK 11 JVM. NullAway is still capable of analyzing JDK 8
122    source/target projects, and should be compatible with the Error Prone JDK 9 javac
123    just as the release before, but a JDK 11 javac is recommended.
124* Update to WALA 1.6.1 and remove ability to build on JDK 8 (#777)
125* Fix compatibility issue when building on JDK 17 but running on JDK 8 (#779)
126* Fix JDK compatibility issue in LombokHandler (#795)
127* Improve auto-fixing of unnecessary castToNonNull calls (#796)
128* Support for JSpecify's 0.3.0 annotation [experimental]
129  - JSpecify: avoid crashes when encountering raw types (#792)
130  - Fix off-by-one error in JSpecify checking of parameter passing (#793)
131* Build / CI tooling for NullAway itself:
132  - Fix Publish Snapshot CI job (#774)
133  - Add step to create release on GitHub (#775)
134  - Build the Android sample app on JDK 17 (#776)
135  - Update to Error Prone 2.20.0 (#772)
136  - Add tasks to run JDK 8 tests on JDK 11+ (#778)
137  - Switch to Spotless for formatting Java code (#780)
138  - Added GCP JMH Benchmark Workflow (#770)
139  - Set concurrency for JMH benchmarking workflow (#784)
140  - Disable daemon when running benchmarks (#786)
141  - Update to Gradle 8.2.1 (#781)
142
143Version 0.10.11
144---------------
145* NULL_LITERAL expressions may always be null (#749)
146* Fix error in Lombok generated code for @Nullable @Builder.Default (#765)
147* Support for specific libraries/APIs:
148  - Added support for Apache Validate (#769)
149  - Introduce FluentFutureHandler as a workaround for Guava FluentFuture (#771)
150* Internal code refactorings:
151  - [Refactor] Pass resolved Symbols into Handler methods (#729)
152  - Prepare for Nullable ASTHelpers.getSymbol (#733)
153  - Refactor: streamline mayBeNullExpr flow (#753)
154  - Refactor LibraryModelsHandler.onOverrideMayBeNullExpr (#754)
155  - Refactor simple onOverrideMayBeNullExpr handlers (#747)
156* Support for JSpecify's 0.3.0 annotation [experimental]
157  - JSpecify generics checks for conditional expressions (#739)
158  - Generics checks for parameter passing (#746)
159  - Clearer printing of types in errors related to generics (#758)
160* NullAwayInfer/Annotator data serialization support [experimental]
161  - Update path serialization for class files (#752)
162* Build / CI tooling for NullAway itself:
163  - Update to Gradle 8.0.2 (#743)
164  - Fix CI on Windows (#759)
165  - Upgrade to Error Prone 2.19.1 (#763)
166  - Upgrade maven publish plugin to 0.21.0 (#773)
167
168Version 0.10.10
169---------------
170* Add command line option to skip specific library models. (#741)
171* Support for specific libraries/APIs:
172  - Model Map.getOrDefault (#724)
173  - Model Class.cast (#731)
174  - Model Class.isInstance (#732)
175* Internal code refactorings:
176  - Refactor code to use Map.getOrDefault where possible (#727)
177  - Break loops when result can no longer change (#728)
178* Support for JSpecify's 0.3.0 annotation [experimental]
179  - JSpecify: initial checks for generic type compatibility at assignments (#715)
180  - Add JSpecify checking for return statements (#734)
181* NullAwayInfer/Annotator data serialization support [experimental]
182  - Refactoring in symbol serialization (#736)
183  - Refactoring tabSeparatedToString logic to prepare for serialization version 3 (#738)
184  - Update method serialization to exclude type use annotations and type arguments (#735)
185* Docs fix: -XepExcludedPaths was added in 2.1.3, not 2.13 (#744)
186
187Version 0.10.9
188--------------
189* Add support for external init annotations in constructors (#725)
190* Ignore incompatibly annotated var args from Kotlin code. (#721)
191* Support for specific libraries/APIs:
192  - Add Throwable.getCause and getLocalizedMessage() library models (#717)
193  - Support more test assertions in OptionalEmptinessHandler (#718)
194  - Support isInstanceOf(...) as implying non-null in assertion libraries (#726)
195* [Refactor] Avoid redundant Map lookups (#722)
196* Build / CI tooling for NullAway itself:
197  - Update to Error Prone 2.18.0 (#707)
198
199Version 0.10.8
200--------------
201* Don't do checks for type casts and parameterized trees in unannotated code (#712)
202* Add an initial `nullaway:nullaway-annotations` artifact. (#709)
203  - Contains only an implementation of `@Initializer` for now.
204* NullAwayInfer/Annotator data serialization support [experimental]
205  - Update region selection for initialization errors. (#713)
206  - Update path serialization for reported errors and fixes. (#714)
207* Build / CI tooling for NullAway itself:
208  - Turn up various Error Prone checks (#710)
209
210Version 0.10.7
211--------------
212(Bug fix release)
213* Resolve regression for type annotations directly on inner types. (#706)
214
215Version 0.10.6
216--------------
217* Handle BITWISE_COMPLEMENT operator (#696)
218* Add support for AssertJ (#698)
219* Fix logic for @Nullable annotation on type parameter (#702)
220* Preserve nullness checks in final fields when propagating nullness into inner contexts (#703)
221* NullAwayInfer/Annotator data serialization support [experimental]
222  - Add source offset and path to reported errors in error serialization. (#704)
223* Build / CI tooling for NullAway itself:
224  - [Jspecify] Update test dep to final JSpecify 0.3.0 release (#700)
225     = Intermediate PRs: 0.3.0-alpha-3 (#692), 0.3-alpha2 (#691)
226  - Update to Gradle 7.6 (#690)
227
228
229Version 0.10.5
230--------------
231* Report more unboxing errors in a single compilation (#686)
232* Remove AccessPath.getAccessPathForNodeNoMapGet (#687)
233* NullAwayInfer/Annotator data serialization support [experimental]
234  - Fix Serialization: Split field initialization region into smaller regions (#658)
235  - Add serialization format version to fix serialization output (#688)
236  - Fix serialization field region computation bug fix (#689)
237* EXPERIMENTAL support for JSpecify's 0.3.0 annotations
238  - [Jspecify] Update tests to JSpecify 0.3.0-alpha-1 (#673)
239  - [Jspecify] Add checks for proper JSpecify generic type instantiations (#680)
240  - (Note: Annotation support for generics is not complete/useful just yet)
241
242Version 0.10.4
243--------------
244(Bug fix release)
245* Fix LibraryModels recording of dataflow nullness for Map APs (#685)
246* Proper checking of unboxing in binary trees (#684)
247* Build / CI tooling for NullAway itself:
248  - Bump dependency versions in GitHub Actions config (#683)
249
250Version 0.10.3
251--------------
252* Report an error when casting @Nullable expression to primitive type (#663)
253* Fix an NPE in the optional emptiness handler (#678)
254* Add support for boolean constraints (about nullness) in Contract annotations (#669)
255* Support for specific libraries/APIs:
256  - PreconditionsHandler reflects Guava Preconditions exception types (#668)
257  - Handle Guava Verify functions (#682)
258* Dependency Updates:
259  - checkerframework 3.26.0 (#671)
260* Build / CI tooling for NullAway itself:
261  - Build and test against Error Prone 2.15.0 (#665)
262  - Bump Error Prone and EP plugin to 2.16 (#675)
263
264Version 0.10.2
265--------------
266* Make AbstractConfig collection fields explicity Immutable (#601)
267* NullAwayInfer/Annotator data serialization support [experimental]
268  - Fix crash in fixserialization when ClassSymbol.sourcefile is null (#656)
269
270Version 0.10.1
271--------------
272This is a bug-fixing release for a crash introduced in 0.10.1 on type.class
273(for primitive type = boolean/int/void/etc.).
274* Fix crash when querying null-markedness of primitive.class expressions (#654)
275* Fix for querying for generated code w/ primitive.class expressions. (#655)
276
277Version 0.10.0
278--------------
279* Switch parameter overriding handler to use Nullness[] (#648) [performance opt!]
280* EXPERIMENTAL support for JSpecify's 0.3.0 @NullMarked and @NullUnmarked semantics
281  - [JSpecify] Support @NullMarked on methods. (#644)
282  - [JSpecify] Support @NullUnmarked. (#651)
283  - Allow AcknowledgeRestrictiveAnnotations to work on fields (#652)
284* Dependency Updates:
285  - Update to WALA 1.5.8 (#650)
286* Build / CI tooling for NullAway itself:
287  - Update to Gradle 7.5.1 (#647)
288  - Add Gradle versions plugin and update some "safe" dependencies (#649)
289
290Version 0.9.10
291--------------
292* Improved support for library models on annotated code:
293  - Make library models override annotations by default. (#636)
294  - Generalize handler APIs for argument nullability on (un-)annotated code (#639)
295    - [Follow-up] Optimizations for parameter nullness handler / overriding (#646)
296  - Generalize handler APIs for return nullability on (un-)annotated code (#641)
297* Support for specific libraries/APIs:
298  - Add library model for Guava's Closer.register (#632)
299  - Support for Map.computeIfAbsent(...) (#640)
300* NullAwayInfer/Annotator data serialization support [experimental]
301  - Augment error serializarion info (#643)
302* Dependency Updates:
303  - Update to Checker Framework 3.24.0 (#631)
304* Fix javadoc and CONTRIBUTING.md typos (#642)
305
306Version 0.9.9
307-------------
308* Fix handling of empty contract arguments (#616)
309* Fix inconsistent treament of generated code in RestrictiveAnnotationHandler (#618)
310* Allow Library Models to override annotations. (#624)
311* Allow tracking field accesses outside the this instance and static fields (#625)
312* Add Guava 31+ support by treating @ParametricNullness as @nullable (#629)
313* Refactoring:
314  - Clean up: Remove method parameter protection analysis (#622)
315  - Clean up: Remove nullable annotation configuration in fix serialization. (#621)
316* Build / CI tooling for NullAway itself:
317  - Add a microbenchmark for type inference / dataflow (#617)
318
319Version 0.9.8
320-------------
321* Fix false positive involving type parameter @Nullable annotations (#609)
322* Add config option to register custom @Generated annotations. (#600)
323* Treat Void formal arguments as @Nullable (#613)
324* Generalize support for castToNonNull methods using library models (#614)
325* Support for specific libraries/APIs:
326  - Support for Preconditions.checkArgument (#608)
327  - Model for com.google.api.client.util.Strings.isNullOrEmpty (#605)
328* Refactoring:
329  - Cleanups to AccessPath representation and implementation (#603)
330  - Clean-up: Remove unused fix suggestion code. (#615)
331* Dependency Updates:
332  - Update to Checker Framework 3.22.2 (#610)
333* Build / CI tooling for NullAway itself:
334  - Add NullAway 0.9.7 as a JMH benchmark (#602)
335  - Update to Error Prone 2.14.0 (#606)
336
337Version 0.9.7
338-------------
339* Allow zero-argument static method calls to be the root of an access path (#596)
340* Support for specific libraries/APIs
341  - Add support for Optional.isEmpty() (#590)
342  - Model System.console() as returning @nullable (#591)
343* JDK 17+ support improvements
344  - Add a test of binding patterns (#583)
345* JSpecify support:
346  - Move JSpecify tests to correct package (#587)
347* NullAwayInfer/Annotator data serialization support [experimental]
348  - Fixes line breaks and tabs in serializing errors. (#584)
349  - Using flatNames for LocalType/anon. classes in fix serialization (#592)
350  - Fixes to computing class and method info for error serialization (#599)
351* Dependency updates
352  - [JarInfer] Update Apache Commons IO dependency. (#582)
353  - Update to Checker Framework 3.21.3 (#564)
354* Build / CI tooling for NullAway itself:
355  - NullAway now builds with NullAway (#560)
356  - Switch to using gradle-build-action (#581)
357  - Compile and test against Error Prone 2.12.0 (#585)
358  - Enabled a few more EP checks on our code (#586)
359    (Note: the `Void` related portion of this changes was reverted)
360  - Update to Gradle 7.4.2 (#589)
361  - Update to Error Prone 2.13.1 and latest Lombok (#588)
362
363Version 0.9.6
364-------------
365* Initial support for JSpecify's @NullMarked annotation (#493)
366  - Fix bug in handling of TreatGeneratedAsUnannotated (#580)
367    (Note: this bug is not in any released NullAway version, but was temporarily
368     introduced to the main/master branch by #493)
369* Improved tracking of map nullness
370  - Improve nullness tracking of map calls in the presence of type casts (#537)
371  - Reason about iterating over a map's key set using an enhanced for loop (#554)
372  - Reason about key set iteration for subtypes of Map (#559)
373  - Add support for Map.putIfAbsent. (#568)
374* Add support for data serialization for Nullaway data for UCR's NullAwayAnnotator
375  - Serialization of Type Change Suggestions for Type Violations (#517)
376  - Measurement of Method protection against nullability of arguments (#575)
377  - Enhanced Serialization Test Infrastructure (#579)
378  - Field initialization serialization (#576)
379* Build / CI tooling for NullAway itself:
380  - Enable parallel builds (#549) (#555)
381  - Add dependence from coveralls task to codeCoverageReport (#552)
382  - Switch to temurin on CI (#553)
383  - Separating NullAwayTests into smaller files (#550)
384  - Require braces for all conditionals and loops (#556)
385  - Enable build cache (#562)
386  - Fix JarInfer integration test on Java 11 (#529)
387  - Get Android sample apps building on JDK 11 (#531)
388  - Limit metaspace size (#563)
389  - Update CI jobs (#565)
390  - Set epApiVersion for jacoco coverage reporting (#566)
391  - Compile and test against Error Prone 2.11.0 (#567)
392  - Fix EP version for jacoco coverage step (#571)
393  - Update to latest Google Java Format (#572)
394
395Version 0.9.5
396-------------
397* JDK17 support improvements:
398  - Fix crash with switch expression as a lambda body (#543, follow up: #545)
399  - Better fix for crash on member selects inside module-info.java (#544)
400* Bump Guava dependency to 24.1.1 (#536)
401* Build / CI tooling for NullAway itself:
402  - Bump AutoValue and AutoService versions (#538)
403  - Add task to run NullAway on itself (#542)
404  - Add test case for unsound map reassignment handling (#541)
405
406Version 0.9.4
407-------------
408* Fix crash with fully-qualified names in module-info.java import (#534)
409
410Version 0.9.3
411-------------
412IMPORTANT: This version introduces EXPERIMENTAL JDK17 support.
413  There is a known crash on lambdas with switch expressions as body
414  (see #524). Best current workaround is to
415  `@SuppressWarnings("NullAway")` on the enclosing method
416* Improve reporting of multiple parameter errors on a single method call (#503)
417* Support compile-time constant field args in method Access Paths (#504)
418* Add basic library support for grpc Metadata through GrpcHandler (#505)
419* Fix soundness bug with dereference of ternary expressions (#516)
420* Add support for switch expressions (#520) [JDK 17]
421* Allow setting custom Nullable Annotation via Error Prone CLI flags (#522)
422* Add JarInfer models for Android SDK 31 (Android 12) (#532)
423* Build / CI tooling for NullAway itself:
424  - Prevent JMH tests from running on pre-v11 JDKs (#492)
425  - Bump to Error Prone 2.8.1 (#494), 2.9.0 (#497), and 2.10.0 (#507)
426  - Docs: Fix a broken link in README.md (#495)
427  - Update to Gradle 7.2 (#496), 7.3.1 (#509), and 7.3.3 (#530)
428  - Add Autodispose benchmark (#498)
429  - Bump jmh plugin to 0.6.6 (#500)
430  - Bump to Checker dataflow 3.20.0 (#510)
431  - CI tests for JDK 17 (#512)
432  - Some fixes to GitHub Actions config (#514)
433  - Make jar-infer-lib tests pass on JDK 11 (#523)
434  - Extra tests for all DummyOptionsConfig's methods (#525)
435  - Pull jmh Gradle plugin version to top level (#526)
436  - Add tests for JDK 16+ records (#527)
437  - Support for Coveralls on multiple modules (#521)
438  - Changes to avoid re-running Gradle tasks unnecessarily (#528)
439
440Version 0.9.2
441-------------
442* Allow specifying custom names for Contract annotations (#476)
443* Use shaded Checker Framework dataflow artifact made for NullAway (#485)
444* Bump Checker dataflow to 3.16.0 (#490)
445* Library Models:
446  - Add library model for java.nio.file.Path.getParent() (#464)
447  - Default models support for Spring's Autowired (#477)
448  - Models for `Objects.requireNonNull()` with `Supplier` (#483)
449* Build / CI tooling for NullAway itself:
450  - Small Gradle build cleanup (#469)
451  - Allow Error Prone API version to be configured via a property (#470)
452  - Also test NullAway on Error Prone 2.6.0 (#471)
453  - Check our code with Error Prone 2.6.0 (#472) [temporary, see below]
454  - Check code with Error Prone 2.7.1 (#480)
455  - Update to Gradle 7.0.2 (#481) then 7.1 (#486)
456  - Add a jmh module for benchmarking (#487, #489)
457  - Test on CI with Error Prone 2.8.0 (#491)
458
459Version 0.9.1
460--------------
461* Add baseline support for (Java 15) records (#377)
462* Multiple build tooling fixed:
463  - Update Gradle to 6.8.3 (#451)
464  - Gradle: switch to java-library plugin where possible (#455)
465  - Switch from mvn-push script to gradle-maven-publish-plugin (#457)
466  - Fix publication of fat jar for jar-infer-cli. (#461)
467* Add JarInfer models for Android 11 (SDK 30) (#460)
468
469Version 0.9.0
470--------------
471* IMPORTANT: Error Prone minimum version moved to 2.4.0 (#447)
472  - This allows compatibility with Error Prone 2.5.1 by
473    moving to updated APIs.
474  - Remove Checker Framework shadow config from nullaway module (#449)
475* `@Contract` annotations are now checked (#312) (#428) (#450)
476* Add support for @RequiresNonnull/@EnsuresNonnull annotations (#423)
477* [Fix] Handle WideningConversionNode in Map key specifiers (#415)
478* [Fix] Try to handle lombok.Builder without crashing. (#414)
479* [Fix] Ignore library models return nullability on first-party code (#446)
480* Update to Checker Dataflow dependency to 3.6.0 (#416)
481* Library Models:
482  - Add library model for TextView.getLayout() (#418)
483  - Add library model for Service.onStartCommand (#419)
484  - Models for common Spring/Spark/Apache utility classes (#436)
485  - Add support for jakarta.inject-api (#439)
486* Build / CI tooling for NullAway itself:
487  - Update to Gradle 6.6.1 (#420)
488  - Switch CI to GitHub Actions (#440) (#442) (#450)
489
490Version 0.8.0
491--------------
492* Improve suppression of subcheckers, using full AST path (#392)
493* Support null implies false library models (#394)
494* Make `@ChecksForNull` an alias for `@Nullable` (#397)
495* Fix: android-jar.py's exit code. (#399)
496* Upgrade Error Prone dependencies to 2.4.0. (#400)
497  - And fix detected issues (#403, #404)
498* Allow library models of the form null param -> null return (#407)
499* Make excluded class annotations work on nested classes (#412)
500* Improved Map handling: Strings and integers. (#413)
501* Also `-SNAPSHOT` builds are being published correctly again (#409)
502* New android-jarinfer-models-sdk29 artifact for Android 10
503
504Version 0.7.10
505--------------
506* Add Java 8 streams nullness-propagation support (#371)
507* Give line numbers for uninitialized fields when reporting error on an initializer (#380)
508* Include outer$inner class name when reporting field init errors (#375)
509* Update to Gradle 6.1.1 (#381)
510* Add @MonotonicNonNull as lazy initialization annotation. (#383)
511* Add default library model for CompilationUnitTree.getPackageName() (#384)
512* Improve matching of native Map methods (#390)
513  - Fixes an IndexOutOfBoundsException checker crash
514
515Version 0.7.9
516-------------
517* Multiple dependency upgrades
518  - Gradle to 5.6.2. (#362)
519  - WALA to 1.5.4 (#337)
520  - Checker Dataflow to 3.0.0 (#369)
521* Added OPTIONAL_CONTENT synthetic field to track Optional  emptiness (#364)
522  - With this, `-XepOpt:NullAway:CheckOptionalEmptiness` should be
523    ready for use.
524* Handle Nullchk operator (#368)
525
526Version 0.7.8
527-------------
528* Added NullAway.Optional suppression (#359)
529* [JarInfer] Ignore non-public classes when inferring annotations. (#360)
530
531Version 0.7.7
532-------------
533* [Optionals] Support Optional isPresent call in assertThat (#349)
534* Preconditions checkNotNull support, added missing cases. (#355)
535* [JarInfer] Use Android Nullable/NonNull annotations for AARs (not javax) (#357)
536
537Version 0.7.6
538-------------
539* Library models for guava's AsyncFunction (#328)
540* Annotate StringUtils.isBlank() of org.apache.commons (lang & lang3) (#330)
541* Adding support for Aar-to-aar transformation (#334)
542* Add support for @RecentlyNullable and @RecentlyNonNull (#335)
543* Update to Gradle 5.5.1 (#336)
544* Don't compute frames on bytecode writting in JarInfer (#338)
545* Use exact jar output path when possible in JarInfer (#339)
546* Avoid adding redundant annotations during bytecode rewriting in JarInfer (#341)
547* Handle cases when there are no annotations on methods or parameters in JarInfer (#342)
548* Fix #333 Nullaway init suppression issue (#343)
549* Add option to JarInfer to deal with signed jars (#345)
550* Fix #344 onActivityCreated known initializer (#346)
551* Skip read-before-init analysis for assert statements (#348)
552
553Version 0.7.5
554------------
555* Allow models to override @nullable on third-party functional interfaces (#326)
556  - Defines Guava's Function and Predicate as @NonNull->@NonNull
557    by default.
558
559Version 0.7.4
560-------------
561* Add support for Jar to Jar transformation to JarInfer (#316)
562* Refactor the driver and annotation summary type in JarInfer (#317)
563* Minor refactor and cleanup in JarInfer-lib (#319)
564* Different approach for param analysis (#320)
565* Fix @NullableDecl support (#324)
566* Treat methods of final classes as final for initialization. (#325)
567
568Version 0.7.3
569-------------
570* Optional support for assertThat(...).isNotNull() statements (#304)
571* Fix NPE in AccessPathElement.toString() (#306)
572* Add tests for optional emptiness support with Rx (#308)
573* Support for assertThat in JUnit and Hamcrest. (#310)
574* Add support for CoreMatchers and core.IsNull in hamcrest. (#311)
575* Make class-level caches for InferredJARModelsHandler instance fields. (#315)
576
577Version 0.7.2
578-------------
579* Install GJF hook using a gradle task, rather than a gradlew hack (#298).
580* Nullable switch expression support (#300).
581* Upgrade to Error Prone 2.3.3 (#295).
582Update Gradle, Error Prone plugin, and Android Gradle Plugin (#294).
583Add support for UNSIGNED_RIGHT_SHIFT (#303).
584
585Version 0.7.1
586--------------
587* Remove warning about @nullable var args (#296).
588
589Version 0.7.0
590--------------
591* Added Optional emptiness handler (#278).
592  `-XepOpt:NullAway:CheckOptionalEmptiness=true` to enable (experimental) support for `Optional` emptiness.
593* Improved (partial but sound-er) varargs support (#291).
594* Refactor for ErrorMessage class use (#284).
595* Custom path to Optional class for Optional emptiness handler (#288).
596* Add support for methods taking literal constant args in Access Paths. (#285).
597
598Version 0.6.6
599---------------
600This only adds a minor library fix supporting Guava's Preconditions.checkNotNull with an error message
601argument (#283)
602
603Version 0.6.5
604---------------
605* Various fixes for generating @SuppressWarnings (#271)
606* Improved error message now doesn't tell users to report NullAway config errors to Error Prone  (#273)
607* Adding support for Activity and Fragment coming from the support libraries (#275)
608* Library models fixes (#277)
609* Add Fragment.onViewCreated as a known initializer. (#279)
610
611Version 0.6.4
612---------------
613* Initial support for JDK 11 (#263).  Core NullAway should be working, but JarInfer does not yet work.
614* Disable JarInfer handler by default (#261).  `-XepOpt:NullAway:JarInferEnabled=true` is now required to enable the JarInfer handler.
615* Add models for Apache StringUtils isEmpty methods (#264)
616* Optimize library model lookups to reduce overhead (#265)
617
618Version 0.6.3
619-------------
620* Fix handling of enhanced for loops (#256)
621
622Version 0.6.2
623-------------
624* Handle lambda override with AcknowledgeRestrictiveAnnotations (#255)
625* Handle interaction between AcknowledgeRestrictiveAnnotations and TreatGeneratedAsUnannotated (#254)
626
627Version 0.6.1
628-------------
629* Enable excluded class annotations to (mostly) work on inner classes (#239)
630* Assertion of not equal to null updates the access path (#240)
631* Update Gradle examples in README (#244)
632* Change how jarinfer finds astubx model jars. (#243)
633* Update to Error Prone 2.3.2 (#242)
634* Update net.ltgt.errorprone to 0.6, and build updates ((#248)
635* Restrictive annotated method overriding (#249)
636   Note: This can require significant annotation changes if
637   `-XepOpt:NullAway:AcknowledgeRestrictiveAnnotations=true` is set.
638   Not a new minor version, since that option is false by default.
639* Fix error on checking the initTree2PrevFieldInit cache. (#252)
640* Add support for renamed android.support packages in models. (#253)
641
642Version 0.6.0
643-------------
644* Add support for marking library parameters as explicitly @Nullable (#228)
645* De-genericize NullnessStore (#231)
646* Bump Checker Framework to 2.5.5 (#233)
647* Pass nullability info on enclosing locals into dataflow analysis for
648  lambdas and anonymous / local classes (#235)
649
650Version 0.5.6
651-------------
652* Add coverage measurement through coveralls. (#224)
653* Fix empty comment added when AutoFixSuppressionComment is not set. (#225)
654* Make JarInfer generated jars fully deterministic by removing timestamps. (#227)
655
656Version 0.5.5
657-------------
658* Allow for custom Error URLS (#220)
659* Fix crash with native methods invoked from initializer (#222)
660
661Version 0.5.4
662-------------
663* Add AutoFixSuppressionComment flag. (#213)
664* [JarInfer] Write to/load from separate astubx model jars (#214)
665* Update readme and tooling versions (#217)
666* Update to Error Prone 2.3.1 and centralize Java compiler flags (#218)
667* [JarInfer] Handler for @Nullable return value annotations (#216)
668
669Version 0.5.3
670-------------
671* JarInfer: Third-party bytecode analysis (MVP version) (#199)
672* Handle @NotNull in hasNonNullAnnotation. (#204)
673* Handler for separate Android models jar (#206)
674* fix: zip entry size error (#207)
675* Small test for restrictive annotations and generics. (#209)
676* Create android-jarinfer-models-sdk28 and fix release scripts. (#210)
677* JarInfer checks for null tested parameters #211
678
679Note: This is the first release to include jar-infer-cli, jar-infer-lib, and
680android-jarinfer-models-sdk28 artifacts
681
682Version 0.5.2
683-------------
684* Fix NPE in Thrift handler on complex receiver expressions (#195)
685* Add ExcludedFieldAnnotations unit tests. (#192)
686* Various crash fixes (#196)
687* Fix @NonNull argument detection in RestrictiveAnnotationHandler. (#198)
688
689Version 0.5.1
690-------------
691* Various fixes for AcknowledgeRestrictiveAnnotations (#194)
692
693Version 0.5.0
694-------------
695* Breaking change: Warn when castToNonNull method is not passed @NonNull (#191)
696* Add -XepOpt:NullAway:AcknowledgeRestrictiveAnnotations config flag. (#189)
697  - WARNING: This feature is broken in this release, fixed on 0.5.1
698* Add support for LEFT_SHIFT and RIGHT_SHIFT (#188)
699* Remove a suppression from a test that doesn't need it. (#183)
700* Support Objects.isNull (#179)
701
702Version 0.4.7
703-------------
704* Clean up some unnecessary state (#168)
705* Properly read type use annotations when code is present as a class file (#172)
706* Fix NPE inside NullAway when initializer methods use try-with-resources (#177)
707
708Version 0.4.6
709-------------
710* Fix a couple of Thrift issues (#164)
711* Don't report initialization warnings on fields for @ExternalInit classes with
712  no initializer methods (#166)
713
714Version 0.4.5
715-------------
716* Fix bug with handling Thrift `TBase.isSet()` calls (#161)
717
718Version 0.4.4
719-------------
720* add UnannotatedClasses option (#160)
721
722Version 0.4.3
723-------------
724* properly handle compound assignments (#157)
725* handle unboxing of array index expression (#158)
726
727Version 0.4.2
728-------------
729* Upgrade Checker Framework dependency to upstream version 2.5.0 (#150)
730* Don't crash on field initialization inside an enum (#146)
731* Properly find super constructor for anonymous classes (#147)
732* Add a Handler for supporting isSetXXXX() methods in Thrift-generated code (#148)
733* Use `@SuppressWarnings` as autofix in a couple more places (#149)
734
735Version 0.4.1
736-------------
737* Initial RxNullabilityPropagator support for method
738  references. (#141)
739
740Version 0.4.0
741-------------
742* Support for checking uses of method references (#139, #140).  Note
743  that this may lead to new NullAway warnings being reported for code
744  that previously passed.
745* Add support for `Observable.doOnNext` to RxNullabilityPropagator
746  (#137)
747
748Version 0.3.7
749-------------
750* Small bug fix in `@Contract` support (#136)
751
752Version 0.3.6
753-------------
754* Support for a subset of JetBrains `@Contract` annotations (#129)
755* Built-in support for JUnit 4/5 assertNotNull, Objects.requireNonNull
756* Fix crash when using try-with-resource with an empty try block. (#135)
757
758Version 0.3.5
759-------------
760* Support for treating `@Generated`-annotated classes as unannotated (#127)
761
762Version 0.3.4
763-------------
764* Support for classes with external initialization (#124)
765
766Version 0.3.3
767-------------
768* Made dependence on Guava explicit (#120)
769* Significantly improved handling of try/finally (#123)
770
771Version 0.3.2
772-------------
773* Just fixed a Gradle configuration problem
774
775Version 0.3.1 (never made it to Maven Central)
776-------------
777* Bug fixes (#107, #108, #110, #112)
778
779Version 0.3.0
780-------------
781* Update library models to require full method signatures rather than
782  just method names (#90).  This is an API-breaking change; if you've
783  written your own library models, they will need to be updated.
784* Support @BeforeEach and @BeforeAll as initializer annotations, and
785  @Inject and @LazyInit as excluded field annotations. (#81)
786* Support Checker Framework's @NullableDecl annotation (#84)
787* Add models for java.util.Deque methods (#86)
788* Add model for WebView.getUrl() (#91)
789
790Version 0.2.2
791-------------
792* minor fixes (#69, #71)
793
794Version 0.2.1
795-------------
796* Fix bug with accesses of fields from unannotated packages (#67)
797* Add models for ArrayDeque (#68)
798
799Version 0.2.0
800-------------
801* New feature: NullAway now does some checking that `@NonNull` fields
802  are not used before the are initialized (#58, #63).  Updating to
803  0.2.0 may cause "read before initialized" problems to be detected in
804  code that was NullAway-clean before.
805* Model `Throwable.getMessage()` as returning `@Nullable`, matching
806  the spec.  This may also cause new warnings in code that was
807  previously NullAway-clean.
808
809Version 0.1.8
810-------------
811* Make NullAway's Error Prone dependence compileOnly (#50).  This could help reduce size of annotation processor paths, speeding build times.
812* Handle AND, OR, XOR expressions getting autoboxed (#55)
813* Handle @Nullable type use annotations (#56)
814
815Version 0.1.7
816-------------
817* -XepOpt:NullAway:ExcludedClasses accepts package prefixes. (#38)
818* Handle unary minus and unary plus (#40)
819* Handle prefix increment / decrement (#43)
820* add check for unannotated packages when excluding a class (#46)
821
822Version 0.1.6
823-------------
824
825* We now check static fields and initializer blocks (#34)
826* Fix for lambdas where the functional interface method had `void` return type (#37)
827
828Version 0.1.5
829-------------
830* Add finer grained suppressions and auto-fixes (#31).  You can
831  suppress initialization errors specifically now with
832  `@SuppressWarnings("NullAway.Init")`
833* Fix performance issue with lambdas (#29)
834* Add lambda support to the RxNullabilityPropagator handler. (#12)
835
836Version 0.1.4
837-------------
838* Another lambda fix (#23)
839
840Version 0.1.3
841-------------
842* Fixes for lambdas (#13, #17)
843
844Version 0.1.2
845-------------
846
847* Downgrade Checker Framework due to crash (#7)
848* More modeling of Rx operators (#8)
849
850Version 0.1.1
851-------------
852
853* Update Checker Framework dependence to pick up bug fix (#4)
854
855
856Version 0.1.0
857-------------
858
859* Initial release
860