microsoft / microsoft/typespec

[Bug]: `isTemplateDeclaration` and `isTemplateDeclarationOrInstance` take `TemplatedType` instead of just `Type`

Open
#5,447 2 comments 0 reactions 0 assignees View on GitHub
bug compiler:core triaged:core
Dominant language
Java
Stars
5.9k
Forks
394
Avg merge
1d 23h
Merged PRs (30d)
104

Description

### Describe the bug

`isTemplateDeclaration` and `isTemplateDeclarationOrInstance` take `TemplatedType` instead of just `Type`. This makes them a lot less useful and inconsistent with `isTemplateInstance`, which takes just a `Type`.

Presumably they were meant to take `Type` because they each have a type assertion of `is TemplatedType`, which is redundant with the parameter already being `TemplatedType`.

I ended up having to write this in my code (and checked that first) so that I could pass a type to `isTemplateDeclaration`:
```ts
const isTemplatedType = (type: Type): type is TemplatedType => {
switch (type.kind) {
case `Scalar`:
case `Union`:
case `Model`:
case `Interface`:
case `Operation`:
return true
default:
return false
}
}
```

### Reproduction

See above

### Checklist

- [x] Follow our [Code of Conduct](https://github.com/microsoft/typespec/blob/main/CODE_OF_CONDUCT.md)
- [x] Check that there isn't already an issue that request the same bug to avoid creating a duplicate.
- [x] Check that this is a concrete bug. For Q&A open a [GitHub Discussion](https://github.com/Microsoft/typespec/discussions).
- [x] The provided reproduction is a [minimal reproducible example](https://stackoverflow.com/help/minimal-reproducible-example) of the bug.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.