What's Changed
- Fix ignored return values of
@CheckReturnValuemethods by @timtebeek in #9031 - Gradle: resolve a BOM version selector in SyncGradleExtPropertiesWithBom, and remove overrides without breaking the script by @jkschneider in #9032
- Find class references in Spring config files of any profile name by @jkschneider in #9033
- Map each Python class attribute to one method or member by @knutwannheden in #9035
- Python: make recipe code type-check against the SDK's stubs and JavaType by @knutwannheden in #9036
- JavaScript: RPC fixes unearthed after Java printing by @greg-at-moderne in #9034
- JavaScript: Fix the RPC handling of NamedStyles in both directions by @greg-at-moderne in #9037
- Python: keep parameter defaults and unannotated methods in generated stubs by @knutwannheden in #9038
- JavaScript: Add BlankLinesStyle on Java side by @greg-at-moderne in #9040
- Go: RPC fixes unearthed after Java printing by @greg-at-moderne in #9041
- Python: make the generated stubs type-check by @knutwannheden in #9039
- Python: Fix RPC sender dropping comprehension edits by @greg-at-moderne in #9042
- Scala 3.10.0 by @greg-at-moderne in #9044
- Python: favor relative_to paths over inferred ones by @greg-at-moderne in #9046
- Python: attach a prebuilt venv in InstallRecipes by @knutwannheden in #9052
- Send JavaType.Variable flags over RPC in every peer by @knutwannheden in #9043
- Python: type a class's properties and self-assigned attributes as fields by @knutwannheden in #9053
- Drop unused classgraph dependencies outside rewrite-java by @timtebeek in #9055
- JavaScript: let several rebinds in one file agree on statements and names by @knutwannheden in #9059
- Scan every JDK module for public java.* types in JavaSourceSet.build by @timtebeek in #9056
- JavaScript templating: object literals and repeated captures by @knutwannheden in #9060
- C#: add Recipe.Validate() so option constraints fail once at prepare time by @macsux in #9049
- Maven: fold a renamed dependency into an existing declaration of another scope by @jkschneider in #9061
- JavaScript: let maybeRebind's type attribution follow the move file-wide by @knutwannheden in #9063
- Python: port maybeRebind, so a moved import re-attributes types as a parse would by @knutwannheden in #9064
- JavaScript: let maybeRebind reuse an existing import of the target member by @knutwannheden in #9065
- JavaScript templating: a substituted value keeps the layout the source gave it by @knutwannheden in #9066
- Python: let a capture's type_hint restrict what a pattern matches by @knutwannheden in #9067
- JavaScript: resolve a node16 project's extensionless relative imports by @knutwannheden in #9068
- Python: a method declaration's declaring type is its class, not the module by @knutwannheden in #9070
- Add a type-attribution report for JavaScript, and sharpen the Python one by @knutwannheden in #9069
- JavaScript: a MethodMatcher type without a package matches only the type in no package by @knutwannheden in #9071
- JavaScript: close type-mapper attribution gaps the type report surfaced by @knutwannheden in #9073
- JavaScript templating: type an untyped capture's placeholder from the value bound to it by @knutwannheden in #9074
- JavaScript: MethodMatcher honors matchOverrides by @knutwannheden in #9075
- JavaScript: record a class's implemented interfaces in its type by @knutwannheden in #9077
- JavaScript: usesType's native visitor matches as Java's HasType does by @knutwannheden in #9079
- JavaScript: declare a call on the class that declares the method, and name module-local classes after their module by @knutwannheden in #9080
- Python: ChangeImport moves a qualified member into a submodule as before #9064 by @knutwannheden in #9081
- Java: a received method invocation keeps its constructor type by @knutwannheden in #9078
- Route Maven and Gradle tests through the build's mirror when no settings.xml mirrors Central by @jkschneider in #9082
- Go: sort each import declaration on its own in
OrderImportsby @sambsnyd in #9062 - Make HasMinimumJavaVersion work on Kotlin and Groovy sources by @timtebeek in #9045
- ChangeMethodName: language-neutral validation messages by @macsux in #9051
- JavaScript: maybeBind binds a default or namespace import under a pinned alias by @knutwannheden in #9085
- JavaScript: a function a pattern's context declares matches a same-named call by @knutwannheden in #9086
- Raise log4j and drop both JLine bundles from the zinc classpath by @timtebeek in #9047
- Python: SearchResult.found leaves an already-marked tree unchanged by @knutwannheden in #9088
- JavaScript: export isEqual and namesUsedWithin by @knutwannheden in #9087
- Python: an import keeps its attribution when another scope binds the same name by @knutwannheden in #9089
- Python: type node ids as int | UUID so random_id() type-checks by @knutwannheden in #9090
- JavaScript: align four helpers with Java and with each other by @knutwannheden in #9092
- JavaScript: scope lookups tell values from types, and members bind nowhere by @knutwannheden in #9091
- JavaScript: ChangeMethodTargetToImport moves matched calls onto an imported member by @knutwannheden in #9093
- JavaScript: add Expression.unwrap and removeMarkerByKind by @knutwannheden in #9096
- JavaScript: a type parameter binds across the declaration carrying it by @knutwannheden in #9097
- JavaScript: a binding answers across
import type, without a duplicate identifier by @knutwannheden in #9098 - JavaScript templating: a template binds every context module its code reads by @knutwannheden in #9094
- JavaScript templating: a replacement keeps the replaced node's
!/?.and, unformatted, a capture's spacing by @knutwannheden in #9095 - JavaScript: a namespace is a third binding kind, which a qualified type name reads by @knutwannheden in #9100
- Python templating: a node spliced into more than one slot gets a fresh id per occurrence by @knutwannheden in #9101
- JavaScript patterns: a call pattern with a variadic capture matches its callee by symbol by @knutwannheden in #9102
- JavaScript:
resolve(cursor, identifier)reads a name by position, and the rebind rename follows it by @knutwannheden in #9103 - JavaScript:
referencesOflists a binding's references, andisWritetells an assignment from a read by @knutwannheden in #9105 - JavaScript patterns: a receiver the pattern writes out has to match the source receiver by @knutwannheden in #9104
- JavaScript: a class static block is a var scope by @knutwannheden in #9106
- Fix RemoveUnusedImports to deal with lower-case static-imported classes by @greg-at-moderne in #9107
- Carry causesAnotherCycle across RPC by @sambsnyd in #9054
- Preserve imported BOM precedence in
SortDependenciesby @martinfrancois in #8508 - Emit search markers on YAML sequences, mappings, and sequence entries by @steve-aom-elliott in #9109
- Parse poetry.lock and pdm.lock as TOML by @timtebeek in #9110
Full Changelog: v8.92.17...v8.92.18