dart-lang / dart-lang/language
Unbounded implementation specific behavior.
- Dominant language
- TeX
- Stars
- 2.9k
- Forks
- 239
- Avg merge
- 2d 18h
- Merged PRs (30d)
- 14
Description
(_Warning: this issue could be too pedantic, I'm not sure, please let me know if it appears that way, but I don't think that it is_.)
It seems to me that (according to the specification) anybody can declare anything to be a conforming dart implementation by declaring all violations to be "implementation specific behavior"?
Consider [this](https://github.com/dart-lang/language/issues/2945#issuecomment-1572504097) comment (and issue) for context, quote:
> In any case, each language processing tool (compilers, the analyzer, ...) has a number of implementation specific behaviors, and they are intentionally not mentioned in these specification documents [...].
and
> Each tool is allowed to do whatever it wants when it comes to implementation specific behavior
If the specification doesn't limit the scope of what it considers to be "implementation specific behavior", wouldn't this trivialize the act of developing a conforming implementation by giving implementers the freedom to call any violation of the specification "implementation specific behavior" which would turn everything in the specification into a recommendation?
That is, one could call the following program written in dart a conforming dart implementation:
```
dynamic novaDart(String code) => null;
```
_"But it doesn't compute anything useful!?"_
_"Well, that's correct, this change in behavior is implementation specific behavior!"_
ECMAScript seems to prevent this by stating the following: [A conforming implementation of ECMAScript must not redefine any facilities that are not implementation-defined, implementation-approximated, or host-defined.](https://262.ecma-international.org/13.0/#sec-conformance)
Contributor guide
Assessment
This issue has not been assessed yet.