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

Improvements to type relation errors #4357

Merged

Conversation

timotheeguerin
Copy link
Member

@timotheeguerin timotheeguerin commented Sep 5, 2024

fix #3291

Changes:

  1. Figure out the most accurate location for the diagnostic
  2. If diagnostic target a child node of the base diagnostic target then emit diagnostic directly there
  3. Otherwise emit back at the root(or closest child node) and build stack of error message

Example the following would now emit the error on a

 const b = #{ prop: #{a: "abc"}};
 const a: {prop: {}} = b;
Type '{ prop: { a: "abc" } }' is not assignable to type '{ prop: {} }'
  Type '{ a: "abc" }' is not assignable to type '{}'
    Object value may only specify known properties, and 'a' does not exist in type '{}'.

Previously the error would have been in the complete wrong place
image

@microsoft-github-policy-service microsoft-github-policy-service bot added the compiler:core Issues for @typespec/compiler label Sep 5, 2024
@azure-sdk
Copy link
Collaborator

azure-sdk commented Sep 5, 2024

All changed packages have been documented.

  • @typespec/compiler
Show changes

@typespec/compiler - feature ✏️

Improvements to type relation errors: Show stack when it happens in a nested property otherwise show up in the correct location.

@azure-sdk
Copy link
Collaborator

You can try these changes here

🛝 Playground 🌐 Website 📚 Next docs

@timotheeguerin timotheeguerin marked this pull request as ready for review September 6, 2024 14:17
packages/compiler/src/lib/service.ts Outdated Show resolved Hide resolved
@timotheeguerin timotheeguerin added this pull request to the merge queue Sep 6, 2024
Merged via the queue into microsoft:main with commit 03d4fca Sep 6, 2024
22 checks passed
@timotheeguerin timotheeguerin deleted the type-relation-improvements branch September 6, 2024 21:26
sarangan12 pushed a commit to sarangan12/typespec that referenced this pull request Sep 16, 2024
fix microsoft#3291

Changes: 
1. Figure out the most accurate location for the diagnostic
2. If diagnostic target a child node of the base diagnostic target then
emit diagnostic directly there
3. Otherwise emit back at the root(or closest child node) and build
stack of error message

Example the following would now emit the error on a
```ts
 const b = #{ prop: #{a: "abc"}};
 const a: {prop: {}} = b;
```

```
Type '{ prop: { a: "abc" } }' is not assignable to type '{ prop: {} }'
  Type '{ a: "abc" }' is not assignable to type '{}'
    Object value may only specify known properties, and 'a' does not exist in type '{}'.
```

Previously the error would have been in the complete wrong place 
<img width="271" alt="image"
src="https://github.com/user-attachments/assets/c403d1ec-3611-4ad6-87b0-2e0a075dc1c5">
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
compiler:core Issues for @typespec/compiler
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Improvement to type relation system
3 participants