Skip to content

[SR-1724][Lexer] Handle hex letters after '.' on hex number literal #3124

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

Merged
merged 1 commit into from
Jun 22, 2016

Conversation

rintaro
Copy link
Member

@rintaro rintaro commented Jun 22, 2016

What's in this pull request?

This case used to emit an error:

extension Int {
    var asUiColor: UIColor { ... }
}
0xfff.asUiColor

If [a-fA-F] follows ., it can be valid int literal followed by dot expression: e.g. 0xff.description, 0xff.fpValue

Resolved bug number: (SR-1724)


Before merging this pull request to apple/swift repository:

  • Test pull request on Swift continuous integration.

Triggering Swift CI

The swift-ci is triggered by writing a comment on this PR addressed to the GitHub user @swift-ci. Different tests will run depending on the specific comment that you use. The currently available comments are:

Smoke Testing

Platform Comment
All supported platforms @swift-ci Please smoke test
All supported platforms @swift-ci Please smoke test and merge
OS X platform @swift-ci Please smoke test OS X platform
Linux platform @swift-ci Please smoke test Linux platform

Validation Testing

Platform Comment
All supported platforms @swift-ci Please test
All supported platforms @swift-ci Please test and merge
OS X platform @swift-ci Please test OS X platform
OS X platform @swift-ci Please benchmark
Linux platform @swift-ci Please test Linux platform

Lint Testing

Language Comment
Python @swift-ci Please Python lint

Note: Only members of the Apple organization can trigger swift-ci.

@rintaro
Copy link
Member Author

rintaro commented Jun 22, 2016

CC: @jckarter

while (isHexDigit(*CurPtr) || *CurPtr == '_')
++CurPtr;
if (*CurPtr != 'p' && *CurPtr != 'P') {
if (letterAfterDot) {
Copy link
Contributor

Choose a reason for hiding this comment

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

The patch LGTM, but please simplify it by eliminating the "letterAfterDot" boolean. You should be able to change this condition to:

if (isDigit(PtrOnDot[1])) {

Copy link
Member Author

Choose a reason for hiding this comment

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

Thank you! done.

@lattner lattner self-assigned this Jun 22, 2016
The following case used to emit an error:

  extension Int {
    var asUiColor: UIColor { ... }
  }

  0xfff.asUiColor
@rintaro rintaro force-pushed the SR-1724-hexnumber-literal branch from a6ea05c to a5eed38 Compare June 22, 2016 04:08
@lattner
Copy link
Contributor

lattner commented Jun 22, 2016

Thanks!

@lattner
Copy link
Contributor

lattner commented Jun 22, 2016

@swift-ci please test and merge

@rintaro
Copy link
Member Author

rintaro commented Jun 22, 2016

Thank you! I will add these test cases in later commit:

var fl_p: Float = 0x1p // expected-error {{expected a digit in floating point exponent}}
var fl_q: Float = 0x1p+ // expected-error {{expected a digit in floating point exponent}}
var fl_r: Float = 0x1.0fp // expected-error {{expected a digit in floating point exponent}}
var fl_s: Float = 0x1.0fp+ // expected-error {{expected a digit in floating point exponent}}

@swift-ci swift-ci merged commit 5063a7d into swiftlang:master Jun 22, 2016
@rintaro rintaro deleted the SR-1724-hexnumber-literal branch June 22, 2016 13:03
@jrose-apple
Copy link
Contributor

jrose-apple commented Jun 22, 2016

Thanks! Can you add a test case for "hex letters but no 'p'"?

@jckarter
Copy link
Contributor

@jrose-apple
Copy link
Contributor

Ah, missed that. Thanks!

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.

5 participants