-
Notifications
You must be signed in to change notification settings - Fork 243
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix #4864 fix #3269 --------- Co-authored-by: Christopher Radek <[email protected]>
- Loading branch information
1 parent
5fbd088
commit fdd69d6
Showing
6 changed files
with
95 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
--- | ||
# Change versionKind to one of: internal, fix, dependencies, feature, deprecation, breaking | ||
changeKind: internal | ||
packages: | ||
- "@typespec/compiler" | ||
--- |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
85 changes: 85 additions & 0 deletions
85
website/src/content/docs/docs/language-basics/directives.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
--- | ||
title: Directives | ||
--- | ||
|
||
Directives are predefined annotations that attach to the syntax nodes unlike decorators which will cary over with `model is`, `op is`, etc. This means any syntax node is able to have a directive(e.g `alias`). | ||
|
||
These are the available directives: | ||
|
||
- [#deprecated](#deprecated) | ||
- [#suppress](#suppress) | ||
|
||
## #deprecated | ||
|
||
The deprecated directive allows marking a node and through it its type as deprecated. It takes a single argument which is the deprecation message. | ||
|
||
```tsp | ||
#deprecated "Use NewUser instead" | ||
model LegacyUser {} | ||
``` | ||
|
||
Using that type will result in a deprecation warning: | ||
|
||
```tsp | ||
model Post { | ||
author: LegacyUser; | ||
// ^ warning: Deprecated: Use NewUser instead | ||
} | ||
``` | ||
|
||
<!-- cspell:disable --> | ||
|
||
```ansi frame="terminal" | ||
$ tsp compile . | ||
Diagnostics were reported during compilation: | ||
[36mmain.tsp[39m:[33m5[39m:[33m11[39m - [33mwarning[39m[90m deprecated[39m: Deprecated: Use NewUser instead | ||
> 5 | author: LegacyUser; | ||
| ^^^^^^^^^^ | ||
Found 1 warning. | ||
``` | ||
|
||
<!-- cspell:enable --> | ||
|
||
Adding another `#suppress` on a node that reports a deprecation warning will suppress the warning automatically. | ||
|
||
```tsp | ||
model Post { | ||
#suppress "Use newAuthor property instead" | ||
author: LegacyUser; // no need to also suppress the deprecated diagnostic about usage of LegacyUser | ||
} | ||
``` | ||
|
||
### Api | ||
|
||
A library or emitter can check if a type was annotated with the deprecated directive using the `isDeprecated` method and/or get the message using `getDeprecationDetails`. | ||
|
||
```ts | ||
import { getDeprecationDetails, isDeprecated } from "@typespec/compiler"; | ||
const isDeprecated = isDeprecated(program, type); | ||
const details = getDeprecationDetails(program, type); | ||
``` | ||
|
||
## #suppress | ||
|
||
Suppress directive allows suppressing a specific warning diagnostic. It takes 2 arguments: | ||
|
||
- The diagnostic code to suppress | ||
- A message to justify the suppression | ||
|
||
:::note | ||
Errors are not suppressable | ||
::: | ||
|
||
```tsp | ||
model Post { | ||
#suppress "deprecated" "We are not ready to migrate yet" | ||
author: LegacyUser; | ||
} | ||
``` | ||
|
||
### Api | ||
|
||
There is currently no exposed api to resolve suppresssions |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters