microsoft / microsoft/typespec

[Bug]: There's seemingly no way to see what arguments were actually specified vs defaulted for a template instantiation

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

Description

### Describe the bug

For example, suppose you have the following:
```tsp
model TemplateModel {
a: A,
b: B
}

model InstantiatedModel1 is TemplateModel;
model InstantiatedModel2 is TemplateModel;
```

As far as I can tell, there's nothing in the TypeSpec AST that lets me differentiate between `TemplateModel` and `TemplateModel`. In both cases the second argument is considered to be `string` and there's no simple indication that in one case it was from a default and in the other case it was explicitly specified.

This matters for my use-case because I'm generating functions for templated models (see https://github.com/TomerAberbach/typespec-fast-check/pull/76 if you're curious) and it would be nice to make the emitted function calls (i.e. template instantiations) not unnecessarily emit default arguments that were not specified in the TypeSpec file.

Related to https://github.com/microsoft/typespec/issues/5448.

### 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.