Skip to content

Consider collapsing multiple repeated type-related error messages when in --pretty #23393

Closed
@JoshuaKGoldberg

Description

@JoshuaKGoldberg

Search Terms: error message pretty collapsing

The TS team started a few conversations in TSConf 2018 about making TypeScript error messages more friendly to newcomers. One good first one to approach could be repeated, near-identical errors around the same type.

Code

For example, if a type is missing multiple times in the same file:

let a: MissingType;
let b: MissingType;
// ..
let c: MissingType;

Expected behavior:

In a debatably perfect world, TypeScript could give a single error message for the repeated class of error:

src/index.ts Error TS2304: Cannot find name 'MissingType'.

1   let a: MissingType;
           ~~~~~~~~~~~
2   let b: MissingType;
           ~~~~~~~~~~~
4   let c: MissingType;
           ~~~~~~~~~~~

Actual behavior:

Three separate errors.

Perhaps a post-processing step in --pretty mode that receives all of a file's errors and smooshes them down when it can?

Some open questions:

  • Which classes of errors would be in this bucket?
    • Example: TS2304 missing type if the type is the same
    • Example: TS2339 property does not exist if the type and property are the same
  • How should this look?
    • As suggested above, which is similar to existing --pretty output but with line+column removed?
    • If there are a many of the same error, should the output truncate with a summary?

Activity

DanielRosenwasser

DanielRosenwasser commented on Apr 13, 2018

@DanielRosenwasser
Member
and smooshes them down when it can?

and smooshes them down when it can?

and smooshes them down when it can?

and smooshes them down

and smooshes

image

DanielRosenwasser

DanielRosenwasser commented on Apr 13, 2018

@DanielRosenwasser
Member

#10489 and #22789 both discuss the idea of related spans which could be leveraged here, but you really want to cut down on these. We could defer all "cannot find" error messages to the end of the checking process and potentially de-dupe in that fashion.

The problem is that you really want to still present the related spans outside of pretty, so we'd need to report a different error depending on pretty which feels bad-ish.

added
RevisitAn issue worth coming back to
and removed on Apr 17, 2018
RyanCavanaugh

RyanCavanaugh commented on Apr 17, 2018

@RyanCavanaugh
Member

Revisit once we have general multi-location diagnostic support.

Some notes in #23444

12 remaining items

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Domain: Error MessagesThe issue relates to error messagingDomain: Related Error SpansSpecifying regions for error messages/diagnostics on multiple locations.FixedA PR has been merged for this issueSuggestionAn idea for TypeScript

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @DanielRosenwasser@JoshuaKGoldberg@RyanCavanaugh@mhegazy

        Issue actions

          Consider collapsing multiple repeated type-related error messages when in --pretty · Issue #23393 · microsoft/TypeScript