digitalmars.D.bugs - continue with the label in foreach
- Hiroshi Sakurai (25/25) Aug 27 2005 http://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F20
- Manfred Nowak (13/16) Aug 27 2005 [...]
- Hiroshi Sakurai (7/23) Aug 27 2005 Oh. Continue statements in foreach is not in the spec.
- =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= (14/44) Aug 27 2005 -----BEGIN PGP SIGNED MESSAGE-----
- Deewiant (3/27) Aug 27 2005 However, the fact that it crashed the compiler with an "internal error"
- Dave (7/23) Aug 27 2005 It is an error to use a non-existent label following continue, and it is
http://f17.aaa.livedoor.jp/~labamba/?BugTrack%2F20 This bug reported by nagadomi in japanese d language wiki. I don't know, this bug already reported. But, I write this. if (alreadyReported) writefln("sorry. m(_ _)m"); In foreach of the class with the onApply method, When continue with the label was used, it was displayed, "Internal error: s2ir.c481". I used compiler DMD v0.129. I can't download DMD v0.130. import std.stream; void parse(Stream stream) { _READ_LINE: foreach (char [] line; stream) { if (line.length == 0) { continue _READ_LINE; } } } int main() { return 0; } thanks, Hiroshi Sakurai.
Aug 27 2005
Hiroshi Sakurai wrote in news:dep4oc$8sq$1 digitaldaemon.com [...]_READ_LINE: foreach (char [] line; stream) {[...]continue _READ_LINE;[...] specs: | If continue is followed by Identifier, the Identifier must be | the label of an enclosing while, for, or do loop, and the next | iteration of that loop is executed. It is an error if there is | no such statement. What does the "it is an error" mean? - It is an error but may not be reported by the compiler. - It is illegal. -manfred
Aug 27 2005
In article <depc5a$goo$1 digitaldaemon.com>, Manfred Nowak says...Hiroshi Sakurai wrote in news:dep4oc$8sq$1 digitaldaemon.com [...]Oh. Continue statements in foreach is not in the spec. umumumumumu... Please write that Continue Statement in foreach can be used for the specification. I think "this is natural". -sakurai_READ_LINE: foreach (char [] line; stream) {[...]continue _READ_LINE;[...] specs: | If continue is followed by Identifier, the Identifier must be | the label of an enclosing while, for, or do loop, and the next | iteration of that loop is executed. It is an error if there is | no such statement. What does the "it is an error" mean? - It is an error but may not be reported by the compiler. - It is illegal. -manfred
Aug 27 2005
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Hiroshi Sakurai schrieb:In article <depc5a$goo$1 digitaldaemon.com>, Manfred Nowak says...Added to DStress as http://dstress.kuehne.cn/nocompile/c/continue_01.d http://dstress.kuehne.cn/nocompile/c/continue_02.d http://dstress.kuehne.cn/nocompile/c/continue_03_A.d http://dstress.kuehne.cn/nocompile/c/continue_03_B.d Thomas -----BEGIN PGP SIGNATURE----- iD8DBQFDEJA53w+/yD4P9tIRAiqlAKDArPOZBWSN0JjQJXIEXIXwESW0HwCbBfUv NtBE2YYgbsurxNkwK3cj4sk= =KACH -----END PGP SIGNATURE-----Hiroshi Sakurai wrote in news:dep4oc$8sq$1 digitaldaemon.com [...]Oh. Continue statements in foreach is not in the spec. umumumumumu..._READ_LINE: foreach (char [] line; stream) {[...]continue _READ_LINE;[...] specs: | If continue is followed by Identifier, the Identifier must be | the label of an enclosing while, for, or do loop, and the next | iteration of that loop is executed. It is an error if there is | no such statement. What does the "it is an error" mean? - It is an error but may not be reported by the compiler. - It is illegal. -manfred
Aug 27 2005
Manfred Nowak wrote:Hiroshi Sakurai wrote in news:dep4oc$8sq$1 digitaldaemon.com [...]However, the fact that it crashed the compiler with an "internal error" still makes it a noteworthy bug._READ_LINE: foreach (char [] line; stream) {[...]continue _READ_LINE;[...] specs: | If continue is followed by Identifier, the Identifier must be | the label of an enclosing while, for, or do loop, and the next | iteration of that loop is executed. It is an error if there is | no such statement. What does the "it is an error" mean? - It is an error but may not be reported by the compiler. - It is illegal. -manfred
Aug 27 2005
In article <depc5a$goo$1 digitaldaemon.com>, Manfred Nowak says...Hiroshi Sakurai wrote in news:dep4oc$8sq$1 digitaldaemon.com [...]It is an error to use a non-existent label following continue, and it is reported by the compiler, but that really is off-topic. As to the original post, it is a compiler bug. If you 'typedef char[][] Stream' then the code compiles fine. It appears that UDT's having an opApply will crash the compiler just as the OP said. - Dave_READ_LINE: foreach (char [] line; stream) {[...]continue _READ_LINE;[...] specs: | If continue is followed by Identifier, the Identifier must be | the label of an enclosing while, for, or do loop, and the next | iteration of that loop is executed. It is an error if there is | no such statement. What does the "it is an error" mean? - It is an error but may not be reported by the compiler. - It is illegal. -manfred
Aug 27 2005