|
| 1 | +# Highlights of the release |
| 2 | + |
| 3 | +- Make polymorphic functions more efficient and expressive [#17548](https://github.com/lampepfl/dotty/pull/17548) |
| 4 | +- SIP-56: Better foundations for match types [#18262](https://github.com/lampepfl/dotty/pull/18262) |
| 5 | +- Make SIP 54 (Multi-Source Extension Overloads) a standard feature [#17441](https://github.com/lampepfl/dotty/pull/17441) |
| 6 | +- Value parameter inference for polymorphic lambdas [#18041](https://github.com/lampepfl/dotty/pull/18041) |
| 7 | +- Add `@publicInBinary` annotation and `-WunstableInlineAccessors` linting flag [#18402](https://github.com/lampepfl/dotty/pull/18402) |
| 8 | +- Stabilize Quotes `defn.PolyFunction` [#18480](https://github.com/lampepfl/dotty/pull/18480) |
| 9 | +- Stabilize Quotes `Flags.AbsOverride` [#18482](https://github.com/lampepfl/dotty/pull/18482) |
| 10 | +- Add `-experimental` compiler flags [#18571](https://github.com/lampepfl/dotty/pull/18571) |
| 11 | +- Stabilize SIP-53 (quote pattern explicit type variable syntax) [#18574](https://github.com/lampepfl/dotty/pull/18574) |
| 12 | +- Add reflect TypeRepr.dealiasKeepOpaques [#18583](https://github.com/lampepfl/dotty/pull/18583) |
| 13 | +- Add attributes section to TASTy and use it for Stdlib TASTy [#18599](https://github.com/lampepfl/dotty/pull/18599) |
| 14 | +- Error when reading class file with unknown newer jdk version [#18618](https://github.com/lampepfl/dotty/pull/18618) |
| 15 | +- Add support for xsbti.compile.CompileProgress [#18739](https://github.com/lampepfl/dotty/pull/18739) |
| 16 | +- Improve type inference for functions like fold [#18780](https://github.com/lampepfl/dotty/pull/18780) |
| 17 | +- Improve error message for mismatched tasty versions, allow configuration of header unpickler [#18828](https://github.com/lampepfl/dotty/pull/18828) |
| 18 | +- In 3.4 make refutable patterns in a for comprehension an error [#18842](https://github.com/lampepfl/dotty/pull/18842) |
| 19 | +- Disallow use of PolyFunction in user code [#18920](https://github.com/lampepfl/dotty/pull/18920) |
| 20 | +- Store source file in TASTY attributes [#18948](https://github.com/lampepfl/dotty/pull/18948) |
| 21 | +- First step to pipelining support - enable reading Java symbols from TASTy [#19074](https://github.com/lampepfl/dotty/pull/19074) |
| 22 | +- Activate constrainResult fix in 3.4 [#19253](https://github.com/lampepfl/dotty/pull/19253) |
| 23 | +- Parallelise JVM backend - Scala 2 port [#15392](https://github.com/lampepfl/dotty/pull/15392) |
| 24 | +- Avoid generating given definitions that loop [#19282](https://github.com/lampepfl/dotty/pull/19282) |
| 25 | + |
| 26 | +## Deprecation warnings for old syntax |
| 27 | + |
| 28 | +- `_` type wildcards [#18813](https://github.com/lampepfl/dotty/pull/18813) |
| 29 | +- `private[this]` [#18819](https://github.com/lampepfl/dotty/pull/18819) |
| 30 | +- `var x = _` [#18821](https://github.com/lampepfl/dotty/pull/18821) |
| 31 | +- `with` as a type operator [#18837](https://github.com/lampepfl/dotty/pull/18837) |
| 32 | +- `xs: _*` varargs [#18872](https://github.com/lampepfl/dotty/pull/18872) |
| 33 | +- trailing `_` to force eta expansion [#18926](https://github.com/lampepfl/dotty/pull/18926) |
| 34 | +- Make explicit arguments for context bounds an error from 3.5 [#19316](https://github.com/lampepfl/dotty/pull/19316) |
| 35 | + |
| 36 | +# Other changes and fixes |
| 37 | + |
| 38 | +## Backend |
| 39 | + |
| 40 | +- Count size of parameters for platform limit check [#18464](https://github.com/lampepfl/dotty/pull/18464) |
| 41 | +- Don't emit line number for synthetic unit value [#18717](https://github.com/lampepfl/dotty/pull/18717) |
| 42 | +- Avoid too eager transform of $outer for lhs & accessor rhs [#18949](https://github.com/lampepfl/dotty/pull/18949) |
| 43 | +- Make more anonymous functions static [#19251](https://github.com/lampepfl/dotty/pull/19251) |
| 44 | +- Fix deadlock in initialization of CoreBTypes using Lazy container [#19298](https://github.com/lampepfl/dotty/pull/19298) |
| 45 | +- Fix #18769: Allow HK type args in Java signatures. [#18883](https://github.com/lampepfl/dotty/pull/18883) |
| 46 | +- Loading symbols from TASTy files directly [#17594](https://github.com/lampepfl/dotty/pull/17594) |
| 47 | +- Use dedicated equals method for univerval equality of chars [#18770](https://github.com/lampepfl/dotty/pull/18770) |
| 48 | + |
| 49 | +## Erasure |
| 50 | + |
| 51 | +- Get generic signature of fields entered after erasure from their accessor [#19207](https://github.com/lampepfl/dotty/pull/19207) |
| 52 | +- Detect case where two alternatives are the same after widening ExprTypes [#18787](https://github.com/lampepfl/dotty/pull/18787) |
| 53 | +- Improve erased params logic [#18433](https://github.com/lampepfl/dotty/pull/18433) |
| 54 | + |
| 55 | +## Experimental: Capture Checking |
| 56 | + |
| 57 | +- Fix capture set variable installation in Setup [#18885](https://github.com/lampepfl/dotty/pull/18885) |
| 58 | +- Don't follow opaque aliases when transforming sym info for cc [#18929](https://github.com/lampepfl/dotty/pull/18929) |
| 59 | +- Reset `comparersInUse` to zero in `ContextState.reset` [#18915](https://github.com/lampepfl/dotty/pull/18915) |
| 60 | +- Special handling of experimental.captureChecking import [#17427](https://github.com/lampepfl/dotty/pull/17427) |
| 61 | +- Change handling of curried function types in capture checking [#18131](https://github.com/lampepfl/dotty/pull/18131) |
| 62 | +- Fix #18246: correctly compute capture sets in `TypeComparer.glb` [#18254](https://github.com/lampepfl/dotty/pull/18254) |
| 63 | +- New capture escape checking based on levels [#18463](https://github.com/lampepfl/dotty/pull/18463) |
| 64 | +- A more robust scheme for resetting denotations after Recheck [#18534](https://github.com/lampepfl/dotty/pull/18534) |
| 65 | +- A more flexible scheme for handling the universal capability [#18699](https://github.com/lampepfl/dotty/pull/18699) |
| 66 | +- Fix potential soundness hole when adding references to a mapped capture set [#18758](https://github.com/lampepfl/dotty/pull/18758) |
| 67 | +- Alternative scheme for cc encapsulation [#18899](https://github.com/lampepfl/dotty/pull/18899) |
| 68 | +- Make reach refinement shallow [#19171](https://github.com/lampepfl/dotty/pull/19171) |
| 69 | + |
| 70 | +## F-bounds |
| 71 | + |
| 72 | +- Don't check bounds of Java applications in Java units [#18054](https://github.com/lampepfl/dotty/pull/18054) |
| 73 | + |
| 74 | +## GADTs |
| 75 | + |
| 76 | +- Avoid embedding SelectionProtos in Conversions [#17755](https://github.com/lampepfl/dotty/pull/17755) |
| 77 | +- Freeze constraints while calculating GADT full bounds [#18222](https://github.com/lampepfl/dotty/pull/18222) |
| 78 | + |
| 79 | +## Implicits |
| 80 | + |
| 81 | +- Followup fix to transparent inline conversion [#18130](https://github.com/lampepfl/dotty/pull/18130) |
| 82 | +- Select local implicits over name-imported over wildcard imported [#18203](https://github.com/lampepfl/dotty/pull/18203) |
| 83 | +- Fix how implicit candidates are combined [#18321](https://github.com/lampepfl/dotty/pull/18321) |
| 84 | +- Improve error message about missing type of context function parameter [#18788](https://github.com/lampepfl/dotty/pull/18788) |
| 85 | +- Support implicit arguments before extractor method [#18671](https://github.com/lampepfl/dotty/pull/18671) |
| 86 | +- Tweak convertible implicits fix [#18727](https://github.com/lampepfl/dotty/pull/18727) |
| 87 | +- Turn given loop prevention on for -source future [#19392](https://github.com/lampepfl/dotty/pull/19392) |
| 88 | +- Fix algorithm to prevent recursive givens [#19411](https://github.com/lampepfl/dotty/pull/19411) |
| 89 | +- Handle default implicits to context parameters under -3.4-migration [#19512] (https://github.com/lampepfl/dotty/pull/19512) |
| 90 | + |
| 91 | +## Incremental Compilation |
| 92 | + |
| 93 | +- Make incremental compilation aware of synthesized mirrors [#18310](https://github.com/lampepfl/dotty/pull/18310) |
| 94 | + |
| 95 | +## Inference |
| 96 | + |
| 97 | +- Honour hard unions in lubbing and param replacing [#18680](https://github.com/lampepfl/dotty/pull/18680) |
| 98 | + |
| 99 | +## Infrastructure |
| 100 | + |
| 101 | +- Use -Yscala2-library-tasty to add Scala 2 lib TASTY to scalac (internal only) [#18613](https://github.com/lampepfl/dotty/pull/18613) |
| 102 | +- Rename `stdlib-bootstrapped-tasty` to `scala2-library-tasty` [#18615](https://github.com/lampepfl/dotty/pull/18615) |
| 103 | +- Fix #19286: Freeze rubygems-update at < 3.5.0. [#19288](https://github.com/lampepfl/dotty/pull/19288) |
| 104 | + |
| 105 | +## Initialization |
| 106 | + |
| 107 | +- Fix #17997: Handle intersection type as this type of super type [#18069](https://github.com/lampepfl/dotty/pull/18069) |
| 108 | +- Add test for issue #17997 affecting the global object initialization checker [#18141](https://github.com/lampepfl/dotty/pull/18141) |
| 109 | +- Fix i18624 and add test case for it [#18859](https://github.com/lampepfl/dotty/pull/18859) |
| 110 | +- Treat new Array(0) as immutable [#19192](https://github.com/lampepfl/dotty/pull/19192) |
| 111 | +- Fix #18407: Ignore Quote/Slice in init checker [#18848](https://github.com/lampepfl/dotty/pull/18848) |
| 112 | +- Check safe initialization of static objects [#16970](https://github.com/lampepfl/dotty/pull/16970) |
| 113 | +- Pattern match support in checking global objects [#18127](https://github.com/lampepfl/dotty/pull/18127) |
| 114 | +- Fix crash in global object initialization checker when select target has no source [#18627](https://github.com/lampepfl/dotty/pull/18627) |
| 115 | +- Fix warning underlining in global init checker [#18668](https://github.com/lampepfl/dotty/pull/18668) |
| 116 | +- Fix i18629 [#18839](https://github.com/lampepfl/dotty/pull/18839) |
| 117 | +- I18628 [#18841](https://github.com/lampepfl/dotty/pull/18841) |
| 118 | +- Make safe init checker skip global objects [#18906](https://github.com/lampepfl/dotty/pull/18906) |
| 119 | +- Handle local lazy vals properly [#18998](https://github.com/lampepfl/dotty/pull/18998) |
| 120 | + |
| 121 | +## Inline |
| 122 | + |
| 123 | +- Fix regression: inline match crash when rhs uses private inlined methods [#18595](https://github.com/lampepfl/dotty/pull/18595) |
| 124 | +- Add structural classes of dynamicApply before inlining [#18766](https://github.com/lampepfl/dotty/pull/18766) |
| 125 | +- Set missing expansion span for copied inlined node [#18229](https://github.com/lampepfl/dotty/pull/18229) |
| 126 | +- Fix `callTrace` of inlined methods [#18738](https://github.com/lampepfl/dotty/pull/18738) |
| 127 | + |
| 128 | +## Linting |
| 129 | + |
| 130 | +- Keep tree of type ascriptions of quote pattern splices [#18412](https://github.com/lampepfl/dotty/pull/18412) |
| 131 | +- Fix false positive in WUnused for renamed path-dependent imports [#18468](https://github.com/lampepfl/dotty/pull/18468) |
| 132 | +- Fix false positive in WUnused for renamed path-dependent imports (2) [#18617](https://github.com/lampepfl/dotty/pull/18617) |
| 133 | +- Fix wunused false positive on CanEqual [#18641](https://github.com/lampepfl/dotty/pull/18641) |
| 134 | +- Implement -Xlint:private-shadow, type-parameter-shadow [#17622](https://github.com/lampepfl/dotty/pull/17622) |
| 135 | +- Fix: reversed wconf parsing order to mirror scala 2 [#18503](https://github.com/lampepfl/dotty/pull/18503) |
| 136 | +- Revert Fix false positive in WUnused for renamed path-dependent imports [#18514](https://github.com/lampepfl/dotty/pull/18514) |
| 137 | + |
| 138 | +## Macro Annotations |
| 139 | + |
| 140 | +- Enter missing symbols generated by the MacroAnnotation expansion [#18826](https://github.com/lampepfl/dotty/pull/18826) |
| 141 | + |
| 142 | +## Match Types |
| 143 | + |
| 144 | +- Allow Tuple.Head and Tuple.Tail to work with EmptyTuple [#17189](https://github.com/lampepfl/dotty/pull/17189) |
| 145 | +- Fix match type reduction with avoided types [#18043](https://github.com/lampepfl/dotty/pull/18043) |
| 146 | +- Strip LazyRef before calling simplified, in MT reduction [#18218](https://github.com/lampepfl/dotty/pull/18218) |
| 147 | +- Fix MT separate compilation bug [#18398](https://github.com/lampepfl/dotty/pull/18398) |
| 148 | +- Do not show deprecation warning for `_` in type match case [#18887](https://github.com/lampepfl/dotty/pull/18887) |
| 149 | + |
| 150 | +## Nullability |
| 151 | + |
| 152 | +- Improve logic when to emit pattern type error [#18093](https://github.com/lampepfl/dotty/pull/18093) |
| 153 | +- Allow nullability flow typing even in presence of pattern match [#18206](https://github.com/lampepfl/dotty/pull/18206) |
| 154 | +- Fix #11967: flow typing nullability in pattern matches [#18212](https://github.com/lampepfl/dotty/pull/18212) |
| 155 | +- Fix #18282: consider Predef.eq/ne in nullability flow typing [#18299](https://github.com/lampepfl/dotty/pull/18299) |
| 156 | +- Make `this.type` nullable again (unless under -Yexplicit-nulls). [#18399](https://github.com/lampepfl/dotty/pull/18399) |
| 157 | + |
| 158 | +## Opaque Types |
| 159 | + |
| 160 | +- Type ascribe trees that require opaque type usage [#18101](https://github.com/lampepfl/dotty/pull/18101) |
| 161 | + |
| 162 | +## Parser |
| 163 | + |
| 164 | +- Fix selecting terms using _root_ [#18335](https://github.com/lampepfl/dotty/pull/18335) |
| 165 | +- Tweak java getlitch not to skip zero [#18491](https://github.com/lampepfl/dotty/pull/18491) |
| 166 | +- Fix i18518 [#18520](https://github.com/lampepfl/dotty/pull/18520) |
| 167 | +- Only apply `future` patches on `future-migration` [#18820](https://github.com/lampepfl/dotty/pull/18820) |
| 168 | +- Parser simple expression error recovery change from `null` to `???` [#19103](https://github.com/lampepfl/dotty/pull/19103) |
| 169 | + |
| 170 | +## Pattern Matching |
| 171 | + |
| 172 | +- Fix syntax and parsing of vararg patterns [#18055](https://github.com/lampepfl/dotty/pull/18055) |
| 173 | +- Avoid over widening in SpaceEngine [#18252](https://github.com/lampepfl/dotty/pull/18252) |
| 174 | +- Fix regression in exhaustivity of HK types [#18303](https://github.com/lampepfl/dotty/pull/18303) |
| 175 | +- Fix missing case in isSubspace, which broke reachablility [#18326](https://github.com/lampepfl/dotty/pull/18326) |
| 176 | +- Unsuppress unchecked warnings [#18377](https://github.com/lampepfl/dotty/pull/18377) |
| 177 | +- Consider extension methods in Space isSameUnapply [#18642](https://github.com/lampepfl/dotty/pull/18642) |
| 178 | +- Fix unreachable warning in deeply nested sealed hierarchy [#18706](https://github.com/lampepfl/dotty/pull/18706) |
| 179 | +- Remove unnecessary and recursive Space decomposition [#19216](https://github.com/lampepfl/dotty/pull/19216) |
| 180 | +- Prioritise sequence-matches over product-sequence-matches [#19260](https://github.com/lampepfl/dotty/pull/19260) |
| 181 | +- Propagate constant in result of inline match [#18455](https://github.com/lampepfl/dotty/pull/18455) |
| 182 | +- Disable match anaylsis in inlined trees [#19190](https://github.com/lampepfl/dotty/pull/19190) |
| 183 | +- Teach provablyDisjoint about AnyKind [#18510](https://github.com/lampepfl/dotty/pull/18510) |
| 184 | +- Warn about unchecked type tests in primitive catch cases [#19206](https://github.com/lampepfl/dotty/pull/19206) |
| 185 | +- Reprioritise seq-match over product-seq-match [#19277](https://github.com/lampepfl/dotty/pull/19277) |
| 186 | +- Fix exhaustivity due to separate TypeVar lambdas [#18616](https://github.com/lampepfl/dotty/pull/18616) |
| 187 | + |
| 188 | +## Presentation Compiler |
| 189 | + |
| 190 | +- Support completions for extension definition parameter [#18331](https://github.com/lampepfl/dotty/pull/18331) |
| 191 | +- Fix: Don't collect map, flatMap, withFilter in for-comprehension [#18430](https://github.com/lampepfl/dotty/pull/18430) |
| 192 | +- Bugfix: Catch exception from the compiler for broken shadowed pickles [#18502](https://github.com/lampepfl/dotty/pull/18502) |
| 193 | +- Bugfix: highlight for enum type params [#18528](https://github.com/lampepfl/dotty/pull/18528) |
| 194 | +- Bugfix: No signature help for local methods [#18594](https://github.com/lampepfl/dotty/pull/18594) |
| 195 | +- Bugfix: add `moduleClass` imported symbols in `IndexedContext` [#18620](https://github.com/lampepfl/dotty/pull/18620) |
| 196 | +- Bugfix: Named args completions with default values [#18633](https://github.com/lampepfl/dotty/pull/18633) |
| 197 | +- Fix: match completions for type aliases [#18667](https://github.com/lampepfl/dotty/pull/18667) |
| 198 | +- Bugfix: add multiline comment completion [#18703](https://github.com/lampepfl/dotty/pull/18703) |
| 199 | +- Bugfix: Backticked named arguments [#18704](https://github.com/lampepfl/dotty/pull/18704) |
| 200 | +- Bugfix: [metals] Case completions for tuple type [#18751](https://github.com/lampepfl/dotty/pull/18751) |
| 201 | +- Completions should prepend, not replace as it is for Scala 2 [#18803](https://github.com/lampepfl/dotty/pull/18803) |
| 202 | +- Bugfix: rename end marker [#18838](https://github.com/lampepfl/dotty/pull/18838) |
| 203 | +- Presentation compiler: Bugfix for semantic tokens and synthetic decorations [#18955](https://github.com/lampepfl/dotty/pull/18955) |
| 204 | +- Show documentation for value forwarders in completions [#19200](https://github.com/lampepfl/dotty/pull/19200) |
| 205 | +- Bugfix: Document highlight on class constructors [#19209](https://github.com/lampepfl/dotty/pull/19209) |
| 206 | +- Bugfix: Completions for extension methods with name conflict [#19225](https://github.com/lampepfl/dotty/pull/19225) |
| 207 | + |
| 208 | +## Polyfunctions |
| 209 | + |
| 210 | +- Check user defined PolyFunction refinements [#18457](https://github.com/lampepfl/dotty/pull/18457) |
| 211 | +- Support polymorphic functions with erased parameters [#18293](https://github.com/lampepfl/dotty/pull/18293) |
| 212 | +- Use `PolyFunction` instead of `ErasedFunction` [#18295](https://github.com/lampepfl/dotty/pull/18295) |
| 213 | + |
| 214 | +## Quotes |
| 215 | + |
| 216 | +- Support type variable with bounds in quoted pattern [#16910](https://github.com/lampepfl/dotty/pull/16910) |
| 217 | +- Add new EXPLICITtpt to TASTy format [#17298](https://github.com/lampepfl/dotty/pull/17298) |
| 218 | +- Inhibit typer to insert contextual arguments when it is inside arguments of HOAS patterns [#18040](https://github.com/lampepfl/dotty/pull/18040) |
| 219 | +- Compile quote patterns directly into QuotePattern AST [#18133](https://github.com/lampepfl/dotty/pull/18133) |
| 220 | +- Add missing span to synthesized product mirror [#18354](https://github.com/lampepfl/dotty/pull/18354) |
| 221 | +- Improve non-static macro implementation error message [#18405](https://github.com/lampepfl/dotty/pull/18405) |
| 222 | +- Fix scala 2 macros in traits with type parameters [#18663](https://github.com/lampepfl/dotty/pull/18663) |
| 223 | +- Patch `underlyingArgument` to avoid mapping into modules [#18923](https://github.com/lampepfl/dotty/pull/18923) |
| 224 | +- Fallback erasing term references [#18731](https://github.com/lampepfl/dotty/pull/18731) |
| 225 | +- Fix ignored type variable bound warning in type quote pattern [#18199](https://github.com/lampepfl/dotty/pull/18199) |
| 226 | +- Splice hole with singleton captures [#18357](https://github.com/lampepfl/dotty/pull/18357) |
| 227 | +- Fix macros with erased arguments [#18431](https://github.com/lampepfl/dotty/pull/18431) |
| 228 | +- Deprecate 3-arg `FunctionClass` constructor [#18472](https://github.com/lampepfl/dotty/pull/18472) |
| 229 | +- Deprecate `Quotes` `{MethodType,TermParamClause}.isErased` [#18479](https://github.com/lampepfl/dotty/pull/18479) |
| 230 | +- Avoid crashes on missing positions [#19250](https://github.com/lampepfl/dotty/pull/19250) |
| 231 | + |
| 232 | +## Reflection |
| 233 | + |
| 234 | +- Add reflect.ValOrDefDef [#16974](https://github.com/lampepfl/dotty/pull/16974) |
| 235 | +- Check New tree for ill-formed module instantiations [#17553](https://github.com/lampepfl/dotty/pull/17553) |
| 236 | +- Add reflect `TypeLambda.paramVariances` [#17568](https://github.com/lampepfl/dotty/pull/17568) |
| 237 | +- Make check flags for `newMethod`, `newVal` and `newBind` in Quotes API less restrictive [#18217](https://github.com/lampepfl/dotty/pull/18217) |
| 238 | +- Normalise mirrorType for mirror Synthesis [#19199](https://github.com/lampepfl/dotty/pull/19199) |
| 239 | +- Add reflect `defn.FunctionClass` overloads [#16849](https://github.com/lampepfl/dotty/pull/16849) |
| 240 | +- Stabilize reflect flag `JavaAnnotation` [#19267](https://github.com/lampepfl/dotty/pull/19267) |
| 241 | +- Stabilize reflect `paramVariance` [#19268](https://github.com/lampepfl/dotty/pull/19268) |
| 242 | + |
| 243 | +## Reporting |
| 244 | + |
| 245 | +- Take into account the result type of inline implicit conversions unless they are transparent [#17924](https://github.com/lampepfl/dotty/pull/17924) |
| 246 | +- Check if a fatal warning issued in typer is silenced, before converting it into an error [#18089](https://github.com/lampepfl/dotty/pull/18089) |
| 247 | +- Elide companion defs to a `object` extending `AnyVal` [#18451](https://github.com/lampepfl/dotty/pull/18451) |
| 248 | +- Add regression test for issue i18493 [#18497](https://github.com/lampepfl/dotty/pull/18497) |
| 249 | +- Add better explanation to error message [#18665](https://github.com/lampepfl/dotty/pull/18665) |
| 250 | +- Better error message when accessing private members [#18690](https://github.com/lampepfl/dotty/pull/18690) |
| 251 | +- Improve message for discarded pure non-Unit values [#18723](https://github.com/lampepfl/dotty/pull/18723) |
| 252 | +- Better error message when a pattern match extractor is not found. [#18725](https://github.com/lampepfl/dotty/pull/18725) |
| 253 | +- Give "did you mean ...?" hints also for simple identifiers [#18747](https://github.com/lampepfl/dotty/pull/18747) |
| 254 | +- Better error for definition followed by keyword [#18752](https://github.com/lampepfl/dotty/pull/18752) |
| 255 | +- Better explain message for 'pattern expected' [#18753](https://github.com/lampepfl/dotty/pull/18753) |
| 256 | +- Improve failure message of enum `fromOrdinal`/`valueOf` [#19182](https://github.com/lampepfl/dotty/pull/19182) |
| 257 | +- Fix type mismatch error confusion between types with same simple name [#19204](https://github.com/lampepfl/dotty/pull/19204) |
| 258 | +- Add hint for nested quotes missing staged `Quotes` [#18755](https://github.com/lampepfl/dotty/pull/18755) |
| 259 | +- Better error messages for missing commas and more [#18785](https://github.com/lampepfl/dotty/pull/18785) |
| 260 | +- Fix imported twice error messages [#18102](https://github.com/lampepfl/dotty/pull/18102) |
| 261 | +- Improve error message for inaccessible types [#18406](https://github.com/lampepfl/dotty/pull/18406) |
| 262 | +- Future migration warning for `with` type operator [#18818](https://github.com/lampepfl/dotty/pull/18818) |
| 263 | +- Improve assertion error message for `Apply` and `TypeApply` [#18700](https://github.com/lampepfl/dotty/pull/18700) |
| 264 | +- Shorten traces for TypeMismatch errors under -explain [#18742](<https://gi> |
| 265 | +- Improve `with` in type migration warning [#18852](https://github.com/lampepfl/dotty/pull/18852) |
| 266 | +hub.com/lampepfl/dotty/pull/18742) |
| 267 | +- Future migration warning for alphanumeric infix operator [#18908](https://github.com/lampepfl/dotty/pull/18908) |
| 268 | +- Make sure that trace is shown correctly in the presence of invalid line numbers [#18930](https://github.com/lampepfl/dotty/pull/18930) |
| 269 | +- Add migration warning for XML literals in language future [#19101](https://github.com/lampepfl/dotty/pull/19101) |
| 270 | +- Avoid diagnostic message forcing crashing the compiler [#19113](https://github.com/lampepfl/dotty/pull/19113) |
| 271 | +- Make sure that the stacktrace is shown with `-Ydebug-unpickling` [#19115](https://github.com/lampepfl/dotty/pull/19115) |
| 272 | +- Improve `asExprOf` cast error formatting [#19195](https://github.com/lampepfl/dotty/pull/19195) |
| 273 | +- Do not warn on underscore wildcard type in pattern [#19249](https://github.com/lampepfl/dotty/pull/19249) |
| 274 | + |
| 275 | +## Scala-JS |
| 276 | + |
| 277 | +- Fix #18658: Handle varargs of generic types in `JSExportsGen`. [#18659](https://github.com/lampepfl/dotty/pull/18659) |
| 278 | + |
| 279 | +## Scaladoc |
| 280 | + |
| 281 | +- Fix incorrect comment parser used in nightly scaladoc [#18523](https://github.com/lampepfl/dotty/pull/18523) |
| 282 | +- Update jsoup dependency of Scaladoc to 7.2 [#19584](https://github.com/lampepfl/dotty/pull/19584) |
| 283 | + |
| 284 | +## SemanticDB |
| 285 | + |
| 286 | +- Export diagnostics (including unused warnings) to SemanticDB [#17835](https://github.com/lampepfl/dotty/pull/17835) |
| 287 | +- Bugfix: Incorrect semanticdb span on Selectable [#18576](https://github.com/lampepfl/dotty/pull/18576) |
| 288 | +- Bugfix: in semanticdb make synthetic apply disambiguator consistent w/ Scala 2 implicit [#17341](https://github.com/lampepfl/dotty/pull/17341) |
| 289 | + |
| 290 | +## Standard Library |
| 291 | + |
| 292 | +- Intrinsify `constValueTuple` and `summonAll` [#18013](https://github.com/lampepfl/dotty/pull/18013) |
| 293 | +- Fix #18609: Add language.`3.4` and language.`3.4-migration`. [#18610](https://github.com/lampepfl/dotty/pull/18610) |
| 294 | + |
| 295 | +## TASTy format |
| 296 | + |
| 297 | +- Eliminate FromJavaObject from TASTy of Java sources [#19259](https://github.com/lampepfl/dotty/pull/19259) |
| 298 | +- Add new HOLETYPES to TASTy format [#17225](https://github.com/lampepfl/dotty/pull/17225) |
| 299 | +- Add capture checking attributes to TASTy [#19033](https://github.com/lampepfl/dotty/pull/19033) |
| 300 | +- Add TASTyInfo abstraction [#19089](https://github.com/lampepfl/dotty/pull/19089) |
| 301 | +- Add UTF8 abstraction in the TASTy format [#19090](https://github.com/lampepfl/dotty/pull/19090) |
| 302 | + |
| 303 | +## Tooling |
| 304 | + |
| 305 | +- Don't add explanation twice [#18779](https://github.com/lampepfl/dotty/pull/18779) |
| 306 | +- ExtractDependencies uses more efficient caching [#18403](https://github.com/lampepfl/dotty/pull/18403) |
| 307 | +- Introduce the SourceVersions 3.4 and 3.4-migration; make 3.4 the default. [#18501](https://github.com/lampepfl/dotty/pull/18501) |
| 308 | +- Bugfix: Completions for named args in wrong order [#18702](https://github.com/lampepfl/dotty/pull/18702) |
| 309 | +- Align unpickled Scala 2 accessors encoding with Scala 3 [#18874](https://github.com/lampepfl/dotty/pull/18874) |
| 310 | +- Reinterpret Scala 2 case accessors `xyz$access$idx` [#18907](https://github.com/lampepfl/dotty/pull/18907) |
| 311 | +- Presentation-compiler: Add synthetic decorations [#18951](https://github.com/lampepfl/dotty/pull/18951) |
| 312 | +- Add compilation unit info to `ClassSymbol` [#19010](https://github.com/lampepfl/dotty/pull/19010) |
| 313 | +- Make sure that patches for 3.0 are also applied in later versions [#19018](https://github.com/lampepfl/dotty/pull/19018) |
| 314 | + |
| 315 | +## Transform |
| 316 | + |
| 317 | +- Also consider @targetName when checking private overrides [#18361](https://github.com/lampepfl/dotty/pull/18361) |
| 318 | +- Teach PostTyper to handle untupled context closures [#17739](https://github.com/lampepfl/dotty/pull/17739) |
| 319 | +- Properly dealias tuple types when specializing [#18724](https://github.com/lampepfl/dotty/pull/18724) |
| 320 | +- Fix condition in prefixIsElidable to prevent compiler crash [#18924](https://github.com/lampepfl/dotty/pull/18924) |
| 321 | +- Fix #18816: Transfer the span of rewired `This` nodes in `fullyParameterizedDef`. [#18840](https://github.com/lampepfl/dotty/pull/18840) |
| 322 | +- List(...) optimization to avoid intermediate array [#17166](https://github.com/lampepfl/dotty/pull/17166) |
| 323 | +- Make Array.apply an intrinsic [#18537](https://github.com/lampepfl/dotty/pull/18537) |
| 324 | +- Add missing span to extension method select [#18557](https://github.com/lampepfl/dotty/pull/18557) |
| 325 | + |
| 326 | +## Tuples |
| 327 | + |
| 328 | +- Handle TupleXXL in match analysis [#19212](https://github.com/lampepfl/dotty/pull/19212) |
| 329 | +- Add `reverse` method to `NonEmptyTuple` [#13752](https://github.com/lampepfl/dotty/pull/13752) |
| 330 | +- Refine handling of pattern binders for large tuples [#19085](https://github.com/lampepfl/dotty/pull/19085) |
| 331 | +- Introduce `Tuple.ReverseOnto` and use it in `Tuple.reverse` [#19183](https://github.com/lampepfl/dotty/pull/19183) |
| 332 | + |
| 333 | +## Typeclass Derivation |
| 334 | + |
| 335 | +- Consider all parents when checking access to the children of a sum [#19083](https://github.com/lampepfl/dotty/pull/19083) |
| 336 | + |
| 337 | +## Typer |
| 338 | + |
| 339 | +- Fix logic when comparing var/def bindings with val refinements [#18049](https://github.com/lampepfl/dotty/pull/18049) |
| 340 | +- Fix variance checking in refinements [#18053](https://github.com/lampepfl/dotty/pull/18053) |
| 341 | +- Fix accessibleType for package object prefixes [#18057](https://github.com/lampepfl/dotty/pull/18057) |
| 342 | +- Refix avoid GADT casting with ProtoTypes [#18085](https://github.com/lampepfl/dotty/pull/18085) |
| 343 | +- Avoid shadowing by private definitions in more situations [#18142](https://github.com/lampepfl/dotty/pull/18142) |
| 344 | +- Refine infoDependsOnPrefix [#18204](https://github.com/lampepfl/dotty/pull/18204) |
| 345 | +- Fix spurious subtype check pruning when both sides have unions [#18213](https://github.com/lampepfl/dotty/pull/18213) |
| 346 | +- Reimplement support for type aliases in SAM types [#18317](https://github.com/lampepfl/dotty/pull/18317) |
| 347 | +- Fix adaptation of constants to constant type aliases [#18360](https://github.com/lampepfl/dotty/pull/18360) |
| 348 | +- Issue "positional after named argument" errors [#18363](https://github.com/lampepfl/dotty/pull/18363) |
| 349 | +- Deprecate `ops.long.S` [#18426](https://github.com/lampepfl/dotty/pull/18426) |
| 350 | +- Tweak selection from self types [#18467](https://github.com/lampepfl/dotty/pull/18467) |
| 351 | +- Use the unwidened type when casting structural calls [#18527](https://github.com/lampepfl/dotty/pull/18527) |
| 352 | +- Fix #18649: Use loBound of param types when materializing a context function. [#18651](https://github.com/lampepfl/dotty/pull/18651) |
| 353 | +- Identify structural trees on Match Type qualifiers [#18765](https://github.com/lampepfl/dotty/pull/18765) |
| 354 | +- Tweak approximation of type variables when computing default types [#18798](https://github.com/lampepfl/dotty/pull/18798) |
| 355 | +- Admit parametric aliases of classes in parent typing [#18849](https://github.com/lampepfl/dotty/pull/18849) |
| 356 | +- Also add privateWithin when creating constructor proxies [#18893](https://github.com/lampepfl/dotty/pull/18893) |
| 357 | +- Revert part of `Simplify defn.FunctionOf.unapply` [#19012](https://github.com/lampepfl/dotty/pull/19012) |
| 358 | +- Check @targetName when subtyping Refined Types [#19081](https://github.com/lampepfl/dotty/pull/19081) |
| 359 | +- Record failures to adapt application arguments [#18269](https://github.com/lampepfl/dotty/pull/18269) |
| 360 | +- Improve handling of AndTypes on the LHS of subtype comparisons [#18235](https://github.com/lampepfl/dotty/pull/18235) |
| 361 | +- Allow inferred parameter types always, when eta-expanding [#18771](https://github.com/lampepfl/dotty/pull/18771) |
| 362 | +- Fix failing bounds check on default getter [#18419](https://github.com/lampepfl/dotty/pull/18419) |
| 363 | +- Use constructor's default getters in case class synthetic `apply` methods [#18716](https://github.com/lampepfl/dotty/pull/18716) |
| 364 | +- Keep qualifier of Ident when selecting setter [#18714](https://github.com/lampepfl/dotty/pull/18714) |
| 365 | +- Retract SynthesizeExtMethodReceiver mode when when going deeper in overloading resolution [#18759](https://github.com/lampepfl/dotty/pull/18759) |
| 366 | +- Constant fold all the number conversion methods [#17446](https://github.com/lampepfl/dotty/pull/17446) |
| 367 | +- Refine criterion when to widen types [#17180](https://github.com/lampepfl/dotty/pull/17180) |
| 368 | +- Run all MatchType reduction under Mode.Type [#17937](https://github.com/lampepfl/dotty/pull/17937) |
| 369 | +- Force consistent MT post-redux normalisation, disallow infinite match types [#18073](https://github.com/lampepfl/dotty/pull/18073) |
| 370 | +- Fix #17467: Limit isNullable widening to stable TermRefs; remove under explicit nulls. [#17470](https://github.com/lampepfl/dotty/pull/17470) |
| 371 | +- Disallow naming the root package, except for selections [#18187](https://github.com/lampepfl/dotty/pull/18187) |
| 372 | +- Contextual varargs parameters [#18186](https://github.com/lampepfl/dotty/pull/18186) |
| 373 | +- Encode the name of the attribute in Selectable.selectDynamic [#18928](https://github.com/lampepfl/dotty/pull/18928) |
| 374 | +- Remove linearization requirement for override ref checks from java classes [#18953](https://github.com/lampepfl/dotty/pull/18953) |
| 375 | +- Fix type inferencing (constraining) regressions [#19189](https://github.com/lampepfl/dotty/pull/19189) |
| 376 | +- Repeated params must correspond in override [#16836](https://github.com/lampepfl/dotty/pull/16836) |
| 377 | +- Convert SAM result types to function types [#17740](https://github.com/lampepfl/dotty/pull/17740) |
| 378 | +- Disallow `infix` objects [#17966](https://github.com/lampepfl/dotty/pull/17966) |
| 379 | +- Fix hasMatchingMember handling NoDenotation [#17977](https://github.com/lampepfl/dotty/pull/17977) |
| 380 | +- Fix: disallow toplevel infix definitions for vals, vars, givens, methods and implicits [#17994](https://github.com/lampepfl/dotty/pull/17994) |
| 381 | +- Curried methods are not valid SAM methods [#18110](https://github.com/lampepfl/dotty/pull/18110) |
| 382 | +- Fix #17115: Try to normalize while computing `typeSize`. [#18386](https://github.com/lampepfl/dotty/pull/18386) |
| 383 | +- Add default arguments to derived refined type [#18435](https://github.com/lampepfl/dotty/pull/18435) |
| 384 | +- Handle dependent context functions [#18443](https://github.com/lampepfl/dotty/pull/18443) |
| 385 | +- Fix variance loophole for private vars [#18693](https://github.com/lampepfl/dotty/pull/18693) |
| 386 | +- Avoid crash arising from trying to find conversions from polymorphic singleton types [#18760](https://github.com/lampepfl/dotty/pull/18760) |
| 387 | +- Allow inner classes of universal traits [#18796](https://github.com/lampepfl/dotty/pull/18796) |
| 388 | +- Prevent crash when extension not found [#18830](https://github.com/lampepfl/dotty/pull/18830) |
| 389 | +- Fix expandParam's use of argForParam/isArgPrefixOf. [#19412](https://github.com/lampepfl/dotty/pull/19412) |
| 390 | + |
| 391 | +# Contributors |
| 392 | + |
| 393 | +Thank you to all the contributors who made this release possible 🎉 |
| 394 | + |
| 395 | +According to `git shortlog -sn --no-merges 3.3.1..3.4.0` these are: |
| 396 | + |
| 397 | +``` |
| 398 | + 474 Martin Odersky |
| 399 | + 296 Nicolas Stucki |
| 400 | + 132 Fengyun Liu |
| 401 | + 119 Dale Wijnand |
| 402 | + 77 Jamie Thompson |
| 403 | + 69 Sébastien Doeraene |
| 404 | + 60 Paweł Marks |
| 405 | + 32 Chris Kipp |
| 406 | + 27 Guillaume Martres |
| 407 | + 26 Rikito Taniguchi |
| 408 | + 21 Yichen Xu |
| 409 | + 19 EnzeXing |
| 410 | + 14 Szymon Rodziewicz |
| 411 | + 13 Lucas Leblanc |
| 412 | + 12 Jakub Ciesluk |
| 413 | + 12 Jędrzej Rochala |
| 414 | + 12 Katarzyna Marek |
| 415 | + 11 Carl |
| 416 | + 10 David Hua |
| 417 | + 9 Florian3k |
| 418 | + 9 Wojciech Mazur |
| 419 | + 8 Eugene Flesselle |
| 420 | + 8 ghostbuster91 |
| 421 | + 7 Hamza Remmal |
| 422 | + 7 Jan Chyb |
| 423 | + 7 Ondrej Lhotak |
| 424 | + 7 Quentin Bernet |
| 425 | + 6 Julien Richard-Foy |
| 426 | + 6 Kacper Korban |
| 427 | + 6 Seth Tisue |
| 428 | + 5 Lorenzo Gabriele |
| 429 | + 5 Matt Bovel |
| 430 | + 5 Som Snytt |
| 431 | + 5 Yuito Murase |
| 432 | + 5 dependabot[bot] |
| 433 | + 3 David |
| 434 | + 3 Lucas |
| 435 | + 3 Pascal Weisenburger |
| 436 | + 3 Tomasz Godzik |
| 437 | + 2 Aleksander Rainko |
| 438 | + 2 Decel |
| 439 | + 2 Guillaume Raffin |
| 440 | + 2 Ondřej Lhoták |
| 441 | + 2 Oron Port |
| 442 | + 2 danecek |
| 443 | + 2 rochala |
| 444 | + 1 Adam Dąbrowski |
| 445 | + 1 Aleksey Troitskiy |
| 446 | + 1 Arnout Engelen |
| 447 | + 1 Ausmarton Zarino Fernandes |
| 448 | + 1 Bjorn Regnell |
| 449 | + 1 Daniel Esik |
| 450 | + 1 Eugene Yokota |
| 451 | + 1 Fabián Heredia Montiel |
| 452 | + 1 François Monniot |
| 453 | + 1 Jakub Cieśluk |
| 454 | + 1 John Duffell |
| 455 | + 1 John M. Higgins |
| 456 | + 1 Justin Reardon |
| 457 | + 1 Kai |
| 458 | + 1 Kisaragi |
| 459 | + 1 Lucas Nouguier |
| 460 | + 1 Lukas Rytz |
| 461 | + 1 LydiaSkuse |
| 462 | + 1 Martin Kucera |
| 463 | + 1 Martin Kučera |
| 464 | + 1 Matthew Rooney |
| 465 | + 1 Matthias Kurz |
| 466 | + 1 Mikołaj Fornal |
| 467 | + 1 Nicolas Almerge |
| 468 | + 1 Preveen P |
| 469 | + 1 Shardul Chiplunkar |
| 470 | + 1 Stefan Wachter |
| 471 | + 1 philippus |
| 472 | + 1 q-ata |
| 473 | + 1 slim |
| 474 | +``` |
0 commit comments