Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved error messages for identically named, differently prefixed types #5622

Merged
merged 2 commits into from Mar 2, 2017

Conversation

@edmundnoble
Copy link
Contributor

@edmundnoble edmundnoble commented Dec 31, 2016

I'm betting this needs a lot of feedback; first compiler PR. The purpose of this PR is to make disambiguating concrete types easier; for example, from type-diagnostics.check:

- found   : scala.collection.Set[String]
- required: scala.collection.immutable.Set[String]
+ found   : Set[String] (in scala.collection)
+ required: Set[String] (in scala.collection.immutable)

This PR does not change the error message if either found or required is an abstract type or type parameter, because I'm not sure it helps as much; in that case it is more likely to be a unification error and not a misplaced import, but if replacing the standard error mechanisms for both cases would help as well I can amend it.

@scala-jenkins scala-jenkins added this to the 2.12.2 milestone Dec 31, 2016
found : java.util.Iterator[Int]
required: scala.collection.Iterator[_]
found : Iterator[Int] (in java.util)
required: Iterator[_] (in scala.collection)

This comment has been minimized.

@ktoso

ktoso Jan 19, 2017

Firstly: very cool idea!
Could we also align the ( segments to easier visually identify where the mismatch is? E.g. what I often find:

Thing[Bla]    (in akka.stream.scaladsl)
Thing[Blabla] (in akka.stream.javadsl)

Which makes it even easier to spot "aha! the diff is the javadsl/scaladsl" and not that the type parameter was the problem (it could be fine, e.g. because Bla extended Blabla etc).

This comment has been minimized.

@ktoso

ktoso Jan 19, 2017

Additional idea would be colour coding the different part of the path... No idea if this is something Scala team would want or not though. The aligning seems already very useful :)

This comment has been minimized.

@edmundnoble

edmundnoble Jan 21, 2017
Author Contributor

Love the first idea at least for sure. I think it definitely deserves including.

This comment has been minimized.

@adriaanm

adriaanm Feb 8, 2017
Member

Based on this idea, I think a small tweak to the current format could be as effective, and more compact:

found   :        java.util.Iterator[Int]
required: scala.collection.Iterator[_]

This comment has been minimized.

@dwijnand

dwijnand Feb 8, 2017
Member

For @ktoso's example that would mean

found:   akka.stream.scaladsl.Thing[Bla]
required: akka.stream.javadsl.Thing[Blabla]

This comment has been minimized.

@ktoso

ktoso Feb 8, 2017

That works well too 👍 Actually probably even better :)

This comment has been minimized.

@edmundnoble

edmundnoble Feb 8, 2017
Author Contributor

I think that's less readable. Most of the point of this PR is to bring the identical parts of the name all the way to the left, so that it's easily recognizable what the problem is. This way, the identical parts of the name are pushed a varying amount to the right.

@fommil
Copy link
Contributor

@fommil fommil commented Jan 19, 2017

this looks pretty cool. Can we be sure that it won't introduce any regressions in name reporter for the interactive compiler?

@edmundnoble
Copy link
Contributor Author

@edmundnoble edmundnoble commented Jan 21, 2017

@fommil I'm not sure what exactly that would entail; this should only affect callsites of foundReqMsg which is only called during error reporting as far as I know.

Edmund Noble Edmund Noble
def finalOwners(tpe: Type): Boolean = (tpe.prefix == NoPrefix) || recursivelyFinal(tpe)

@tailrec
final def recursivelyFinal(tpe: Type): Boolean = {

This comment has been minimized.

@lrytz

lrytz Feb 21, 2017
Member

could be a local method within finalOwners

Copy link
Member

@lrytz lrytz left a comment

I'm starting to like it.

@adriaanm adriaanm merged commit 96a7617 into scala:2.12.x Mar 2, 2017
6 checks passed
6 checks passed
cla @edmundnoble signed the Scala CLA. Thanks!
Details
combined All previous commits successful.
integrate-ide [4243] SUCCESS. Took 3 s.
Details
validate-main [4742] SUCCESS. Took 53 min.
Details
validate-publish-core [4618] SUCCESS. Took 4 min.
Details
validate-test [4095] SUCCESS. Took 48 min.
Details
@SethTisue
Copy link
Member

@SethTisue SethTisue commented Mar 2, 2017

thanks Edmund, nice work & nice improvement.

SethTisue added a commit to SethTisue/scala that referenced this pull request Mar 6, 2017
only trivial merge conflict involving a method renaming

*   d1d700e - (origin/HEAD, origin/2.12.x) Merge pull request scala#5754 from Philippus/issue/html-tag-in-hover (2 days ago) <Lukas Rytz>
|\
| * cf64718 - pattern for entitylink was too narrow, cleaned up the tests (3 days ago) <Philippus Baalman>
* |   f771395 - Merge pull request scala#5671 from retronym/topic/stubby-2 (3 days ago) <Lukas Rytz>
|\ \
| * | ad13063 - Remove non-essential fix for stub symbol failure (4 days ago) <Jason Zaugg>
| * | 7f2d1fa - Avoid forcing info transforms of primitive methods (2 weeks ago) <Jason Zaugg>
| * | 37a0eb7 - Avoid stub symbol related crash in backend (2 weeks ago) <Jason Zaugg>
* | |   96a7617 - Merge pull request scala#5622 from edmundnoble/extra-errs (4 days ago) <Adriaan Moors>
|\ \ \
| * | | 466e52b - Match error lengths (4 weeks ago) <Edmund Noble>
| * | | d1fc983 - Improved error messages for identically named, differently prefixed types (9 weeks ago) <Edmund Noble>
|  / /
* | |   f2e05c2 - Merge pull request scala#5728 from Philippus/issue/html-tag-in-hover (4 days ago) <Lukas Rytz>
|\ \ \
| | |/
| |/|
| * | e3c5df8 - added missing Inline matches to inlineToStr so it is now exhaustive scala.xml.XML.loadString(tag).text will remove all html tags inside the HtmlTag (9 days ago) <Philippus Baalman>
* | |   920bc4e - Merge pull request scala#5743 from som-snytt/issue/10207-bad-update (7 days ago) <Lukas Rytz>
|\ \ \
| * | | 094f7f9 - SI-10207 Error before update conversion (8 days ago) <Som Snytt>
* | | |   1b4d36f - Merge pull request scala#5746 from paulp/pr/partest (7 days ago) <Lukas Rytz>
|\ \ \ \
| |/ / /
|/| | |
| * | | eac00e1 - Add partest paths to the list of watched sources. (8 days ago) <Paul Phillips>
|/ / /
* | |   5f1a638 - Merge pull request scala#5732 from retronym/topic/build-info-malarkey (10 days ago) <Adriaan Moors>
|\ \ \
| * | | 5e9acac - More predictable performance of SBT build startup, reload (11 days ago) <Jason Zaugg>
|  / /
* | |   759a7b7 - Merge pull request scala#5735 from SethTisue/sd-313 (10 days ago) <Adriaan Moors>
|\ \ \
| * | | ed4ddf5 - increase timeouts on some sys.process tests (11 days ago) <Seth Tisue>
* | | |   e2aaf2c - Merge pull request scala#5723 from dragos/issue/regression-assert-ide (11 days ago) <Lukas Rytz>
|\ \ \ \
| |/ / /
|/| | |
| * | | e5c957e - Fix regression in 5751763 (12 days ago) <Iulian Dragos>
* | | |   f174bfb - Merge pull request scala#5731 from janekdb/issue/scalaGH-644/fix-spec-latex-rendering (11 days ago) <Seth Tisue>
|\ \ \ \
| * | | | ba4c6d4 - scalaGH-644: Remove static html styling of spec code blocks (11 days ago) <Janek Bogucki>
|/ / / /
* | | |   8e40bef - Merge pull request scala#5729 from scala/revert-5658-topic/hashhash (12 days ago) <Adriaan Moors>
|\ \ \ \
| |_|/ /
|/| | |
| * | | 86cd70f - (origin/revert-5658-topic/hashhash) Revert "Fix erasure of the qualifier of ##" (12 days ago) <Adriaan Moors>
|/ / /
* | |   cbf7daa - Merge pull request scala#5681 from Philippus/issue/9704 (13 days ago) <Lukas Rytz>
|\ \ \
| * | | b8a8ac1 - moved Pattern and TagsNotToClose to a HtmlTag companion object (13 days ago) <Philippus Baalman>
| * | | a019082 - SI-9704 don't add a closed HtmlTag if it is already closed (4 weeks ago) <Philippus Baalman>
|  / /
* | |   effde0c - Merge pull request scala#5726 from scala/revert-5629-issue/10120-quote-err (13 days ago) <Adriaan Moors>
|\ \ \
| * | | d60f6e3 - (origin/revert-5629-issue/10120-quote-err) Revert "SI-10133 Require escaped single quote char lit" (13 days ago) <Adriaan Moors>
|/ / /
* | |   a8c4a54 - Merge pull request scala#5663 from gourlaysama/ticket/sd-256-enable-repl-colors-unix-2 (13 days ago) <Adriaan Moors>
|\ \ \
| * | | 6411170 - SD-256 enable colored output by default on unix (13 days ago) <Antoine Gourlay>
* | | |   c96a977 - Merge pull request scala#5658 from retronym/topic/hashhash (13 days ago) <Lukas Rytz>
|\ \ \ \
| |/ / /
|/| | |
| * | | f85c62e - Fix erasure of the qualifier of ## (6 weeks ago) <Jason Zaugg>
|  / /
* | |   76bfb9e - Merge pull request scala#5708 from szeiger/issue/si10194 (13 days ago) <Lukas Rytz>
|\ \ \
| * | | 1d22ee4 - SI-10194: Fix abstract type resolution for overloaded HOFs (13 days ago) <Stefan Zeiger>
|  / /
* | |   dabec1a - Merge pull request scala#5700 from retronym/ticket/10154-refactor (13 days ago) <Lukas Rytz>
|\ \ \
| * | | 06eee79 - Refactor implementation of lookupCompanion (2 weeks ago) <Jason Zaugg>
|  / /
* | |   2f1e0c2 - Merge pull request scala#5704 from som-snytt/issue/10190-elide-string (13 days ago) <Lukas Rytz>
|\ \ \
| * | | 6fb3825 - SI-10190 Elide string to empty instead of null (3 weeks ago) <Som Snytt>
|  / /
* | |   13f7b2a - Merge pull request scala#5640 from optimizely/repl-import-handler (2 weeks ago) <Adriaan Moors>
|\ \ \
| * | | aa7e335 - Fix ImportHandler's reporting of importedNames and importedSymbols (8 weeks ago) <Hao Xia>
| * | | c89d821 - Fix SIOOBE in Name#pos for substrings of length 1 (8 weeks ago) <Jason Zaugg>
|  / /
* | |   023a96a - Merge pull request scala#5629 from som-snytt/issue/10120-quote-err (2 weeks ago) <Adriaan Moors>
|\ \ \
| * | | 05cc3e2 - SI-10120 ReplReporter handles message indent (7 weeks ago) <Som Snytt>
| * | | 939abf1 - SI-10120 Extra advice on unclosed char literal (8 weeks ago) <Som Snytt>
| * | | 855492c - SI-10133 Require escaped single quote char lit (8 weeks ago) <Som Snytt>
|  / /
* | |   e21ab42 - Merge pull request scala#5660 from som-snytt/issue/9464-spec (2 weeks ago) <Adriaan Moors>
|\ \ \
| * | | a6dcceb - SI-9464 Clarify spec on no final trait (6 weeks ago) <Som Snytt>
|  / /
* | |   e87a436 - Merge pull request scala#5659 from retronym/ticket/10026 (2 weeks ago) <Adriaan Moors>
|\ \ \
| |/ /
|/| |
| * | 777a0e5 - SI-10026 Fix endless cycle in runtime reflection (2 weeks ago) <Jason Zaugg>
| |/
* |   23e5ed9 - Merge pull request scala#5707 from retronym/topic/java9-prepare (2 weeks ago) <Lukas Rytz>
|\ \
| * | 96e8e97 - Workaround bug in Scala runtime reflection on JDK 9 (3 weeks ago) <Jason Zaugg>
| * | fe2d9a4 - Avoid ambiguous overload on JDK 9 (3 weeks ago) <Jason Zaugg>
| * | 6bba8f7 - Adapt to change in ClassLoader in JDK 9 (3 weeks ago) <Jason Zaugg>
| * | 8136057 - Bump scala-asm version (3 weeks ago) <Jason Zaugg>
|  /
* |   cad3c3d - Merge pull request scala#5709 from adriaanm/sam_wild_bound (2 weeks ago) <Lukas Rytz>
|\ \
| * | c396e96 - Ignore BoundedWildcardType in erasure type map (2 weeks ago) <Adriaan Moors>
* | |   3e9df41 - Merge pull request scala#5711 from retronym/ticket/jrt (2 weeks ago) <Lukas Rytz>
|\ \ \
| * | | 09c7edc - Faster and simpler Java 9 classpath implementation (2 weeks ago) <Jason Zaugg>
|  / /
* | |   7b9d3cc - Merge pull request scala#5713 from janekdb/issue/scalaGH-644/sync-jekyll-README-to-Gemfile (2 weeks ago) <Lukas Rytz>
|\ \ \
| * | | 5e5ec9a - scalaGH-644: Expand note regarding Jekyll versions (2 weeks ago) <Janek Bogucki>
|  / /
* | |   144f7e0 - Merge pull request scala#5714 from dragos/issue/usage-sterr-SI-10178 (2 weeks ago) <Lukas Rytz>
|\ \ \
| |/ /
|/| |
| * | 640c85e - SI-10178 Route reporter.echo to stdout (2 weeks ago) <Iulian Dragos>
|  /
* |   2fec08b - Merge pull request scala#5717 from som-snytt/issue/10148-followup (2 weeks ago) <Adriaan Moors>
|\ \
| |/
|/|
| * f3d271b - SI-10148 Accept verbose zero (2 weeks ago) <Som Snytt>
* 147e5dd - Merge pull request scala#5716 from adriaanm/i296 (2 weeks ago) <Jason Zaugg>
* 12437a0 - Ensure ordering for args to `choose` in DurationTest (2 weeks ago) <Adriaan Moors>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
8 participants