Skip to content

[CodeCompletion] Modifier related improvements in CompletionOverrideLookup #4518

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
Aug 26, 2016

Conversation

rintaro
Copy link
Member

@rintaro rintaro commented Aug 26, 2016

What's in this pull request?

  • If required or convenience is specified, emit only initializers
  • If final or open is specified, don't emit initializers or typealias
  • If typealias is specified, emit only associated type implementation
  • Emit override or required modifier for initializers
  • Emit access modifier for initializers
  • Emit designated initializers even if override is specified
  • Don't emit inheritance clause for associated type implementation (SR-2383)

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

A smoke test on macOS does the following:

  1. Builds the compiler incrementally.
  2. Builds the standard library only for macOS. Simulator standard libraries and
    device standard libraries are not built.
  3. lldb is not built.
  4. The test and validation-test targets are run only for macOS. The optimized
    version of these tests are not run.

A smoke test on Linux does the following:

  1. Builds the compiler incrementally.
  2. Builds the standard library incrementally.
  3. lldb is built incrementally.
  4. The swift test and validation-test targets are run. The optimized version of these
    tests are not run.
  5. lldb is tested.

Validation Testing

Platform Comment
All supported platforms @swift-ci Please test
All supported platforms @swift-ci Please clean 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 clean test OS X platform
OS X platform @swift-ci Please benchmark
Linux platform @swift-ci Please test Linux platform
Linux platform @swift-ci Please clean 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 Aug 26, 2016

@swift-ci Please test

@swift-ci
Copy link
Contributor

Build failed
Jenkins build - Swift Test OS X Platform
Git Commit - f0c185e10f9c23588782e1d4179708a31a09c9e3
Test requested by - @rintaro

@rintaro rintaro force-pushed the cc-override-modifier branch from f0c185e to d7d3a1e Compare August 26, 2016 11:46
@rintaro
Copy link
Member Author

rintaro commented Aug 26, 2016

@swift-ci Please test

@rintaro
Copy link
Member Author

rintaro commented Aug 26, 2016

@benlangmuir Could you review this?

if (hasInitializerModifier)
return;

if (!hasIntroducer || hasVarIntroducer)
Copy link
Contributor

Choose a reason for hiding this comment

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

If someone wrote required var or convenience func, etc. I suggest we still give them var and func override completions. It's going to be invalid, but they can accept the fixits. So something like

if (hasVarIntroducer || (!hasIntroducer && !hasInitializerModifier)) {

and likewise for functions.

Copy link
Member Author

Choose a reason for hiding this comment

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

👍 Makes sense!
And also for typealias. e.g. final typealias

@benlangmuir
Copy link
Contributor

Otherwise, LGTM!

…ookup

* If "required" or "convenience" is specified, emit only initializers
* If "final" or "open" is specified, don't emit initializers or typealias
* If "typealias" is specified, emit only associated type implementation
* Emit "override" or "required" modifier for initializers
* Emit access modifier for initializers
* Emit designated initializers even if "override" is specified
* Don't emit inheritance clause for associated type implentation
@rintaro rintaro force-pushed the cc-override-modifier branch from d7d3a1e to b827298 Compare August 26, 2016 18:49
@benlangmuir
Copy link
Contributor

@swift-ci Please smoke test

@benlangmuir
Copy link
Contributor

@swift-ci Please smoke test linux

@benlangmuir benlangmuir merged commit 4fc3531 into swiftlang:master Aug 26, 2016
@rintaro rintaro deleted the cc-override-modifier branch August 29, 2016 10:25
aaditya-chandrasekhar pushed a commit to val-verde/swift that referenced this pull request Sep 30, 2022
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.

3 participants