Skip to content

CC: Increase Precision of Errors for Lambdas #23820

@bracevac

Description

@bracevac

Compiler version

3.8 nightly

Minimized code

I noticed that typing issues stemming from CC in closures/lambdas will point to the start of the block and not the actual line causing the issues, as seen in the test case
fa3863f.

Output

Here is the first error message from that test:

-- [E007] Type Mismatch Error: tests/neg-custom-args/captures/classifiers-secondclass.scala:41:28 ----------------------
41 |      parReduce(1 to 1000): (a, b) => // error
   |                            ^
   |Found:    (a: Int, b: Int) ->{f.write, f.read} Int
   |Required: (Int, Int) ->{cap.only[Read]} Int
   |
   |Note that capability f.write is not included in capture set {cap.only[Read]}.
   |
   |where:    cap is a fresh root capability created in anonymous function of type (f²: Levels.File^): Unit when checking argument to parameter op of method parReduce
42 |        f.write(42)         // the error stems from here
43 |        a + b + f.read()    // ok
   |
   | longer explanation available when compiling with `-explain`

Expectation

The error marker should point to this line instead

42 |        f.write(42)         // the error stems from here

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions