dart-lang / dart-lang/language

Unbounded implementation specific behavior.

Open
#3,124 7 comments 0 reactions 0 assignees View on GitHub
bug
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

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.