Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[SR-11148] Separate do and while blocks generate error from legacy diagnostic #53544

Closed
robinkunde opened this issue Jul 16, 2019 · 6 comments
Closed

Comments

@robinkunde
Copy link
Contributor

robinkunde commented Jul 16, 2019

Previous ID SR-11148
Radar None
Original Reporter @robinkunde
Type Bug
Status Resolved
Resolution Done
Environment

Swift version 5.0.1 (swiftlang-1001.0.82.4 clang-1001.0.46.5)

Additional Detail from JIRA
Votes 0
Component/s Compiler
Labels Bug, DiagnosticsQoI, Parser, StarterBug
Assignee mkita (JIRA)
Priority Medium

md5: d1d46fcf6bad8750ff6f9a64bdc59a1b

Issue Description:

A standalone do block without the optional catch block, followed by a while block will generate the error "'do-while' statement is not allowed; use 'repeat-while' instead". This is caused by a diagnostic for dealing with legacy code using "do-while". The error disappears if the statements are separated with a semicolon.

The diagnostic could be improved by suggesting the semicolon or taking the separating newlines into account. cc @belkadan

do {

}

while true {
    break
}
@belkadan
Copy link
Contributor

belkadan commented Jul 17, 2019

@rintaro, think this is simple enough for a starter bug?

@swift-ci
Copy link
Collaborator

swift-ci commented Jul 23, 2019

Comment by Michal Cichecki (JIRA)

@belkadan how do you think this should be handled? Is semicolon in the end of the do block sufficient in this case?

@belkadan
Copy link
Contributor

belkadan commented Jul 23, 2019

The semicolon would be sufficient, but it's not really standard Swift, and it would stand out in a function with no other semicolons. I'd go for suggesting the extra newline myself; Rintaro may also have suggestions.

@swift-ci
Copy link
Collaborator

swift-ci commented Jul 23, 2019

Comment by Michal Cichecki (JIRA)

I agree. How would an extra newline help in this case?

@belkadan
Copy link
Contributor

belkadan commented Jul 23, 2019

Swift doesn't have do-while loops at all anymore, so we're just trying to decide when to emit the diagnostic. If the compiler can guess that the developer probably didn't write a do-while loop by accident (and was instead using a do block followed by a normal while loop), then it can just not emit the diagnostic.

@swift-ci
Copy link
Collaborator

swift-ci commented Jan 4, 2020

Comment by Maksim Kita (JIRA)

https://github.com/apple/swift/pull/28951 merged

@swift-ci swift-ci transferred this issue from apple/swift-issues Apr 25, 2022
This issue was closed.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants