Skip to content

Conversation

@kenguest
Copy link
Contributor

@kenguest kenguest commented Nov 19, 2025

Update section 5.2 advising that semi-colons must not be used in switch statement.

Resolves #128

@theodorejb
Copy link
Contributor

I don't think this is needed, since the example already uses colons, and the semicolon syntax is now deprecated in PHP itself.

@kenguest
Copy link
Contributor Author

For some people, implicit/implied requirements as shown in sample code is not as clear-cut compared to when outlined in the prose of the requirements document, so this is still very much needed.

@kenguest
Copy link
Contributor Author

I've changed the wording to below:

The caseanddefault keywords MUST use colons as shown in the sample code below.

@theodorejb
Copy link
Contributor

The description should probably mention that this will close #128.

@kenguest
Copy link
Contributor Author

The description should probably mention that this will close #128.

I've updated the description accordingly.

indented at the same level as the `case` body. There MUST be a comment such as
`// no break` when fall-through is intentional in a non-empty `case` body.
The `case` and `default` keywords MUST use colons as shown in the sample code below.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change

@Crell
Copy link
Collaborator

Crell commented Dec 1, 2025

(Adjusted reference in the summary to match GitHub automation expectations.)

@Crell
Copy link
Collaborator

Crell commented Dec 1, 2025

@jrfnl Would this language be good enough for you? It's a bit wiggly in how it specifies things, but maybe that's OK in this case?

from `switch`, and the `break` keyword (or other terminating keywords) MUST be
indented at the same level as the `case` body. There MUST be a comment such as
`// no break` when fall-through is intentional in a non-empty `case` body.
The `case` and `default` keywords MUST use colons as shown in the sample code below.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
The `case` and `default` keywords MUST use colons as shown in the sample code below.
The `case` and `default` keywords MUST use colons.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd prefer the existing language, so that it also applies to formatting of the colons (e.g. there shouldn't be whitespace between case and :).

@jrfnl
Copy link
Contributor

jrfnl commented Dec 1, 2025

@jrfnl Would this language be good enough for you? It's a bit wiggly in how it specifies things, but maybe that's OK in this case?

I still think it's kind of redundant, but if this is being made explicit, than the text should be leading. The reference to the sample code like this, would be the only one of its kind in the whole document, so to me, it feels like it doesn't belong.

If anything, the rule as described now, still leaves room for code like this - take note of the redundant curly braces -, which IIRC is discouraged:

switch ($foo) {
    case 10 : {
        // Do something.
        break;
    }
}

I wonder if PERCS should be explicit with an opinion about redundant curlies in this context if the use of the colon is being made explicit now anyway ?

@Crell
Copy link
Collaborator

Crell commented Dec 1, 2025

(With editor hat on) I'm open to not doing anything here if that ends up being the consensus. Or if the consensus is we should specify something, that's OK too. I don't have a large personal stake here.

I... didn't know extra braces were legal, either. 😅 I'd be OK with forbidding those if the rest of the WG is.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Forbid use of semi-colon on switch case/default statements

6 participants