swiftlang/swift

[SR-5984] Error message for accidentally calling function in #selector(foo()) could suggest removing parens

Open

#48,543 opened on Sep 26, 2017

View on GitHub
 (3 comments) (0 reactions) (0 assignees)Swift (10,719 forks)batch import
bugcompilerdiagnostics qualitygood first issuetype checker

Repository metrics

Stars
 (69,989 stars)
PR merge metrics
 (Avg merge 8d 17h) (510 merged PRs in 30d)

Description

Previous ID SR-5984
Radar rdar://problem/34640740
Original Reporter @huonw
Type Bug
Status In Progress
Resolution

Swift 4.0

Votes 0
Component/s Compiler
Labels Bug, DiagnosticsQoI, StarterBug, TypeChecker
Assignee None
Priority Medium

md5: 939952c8851f309540d6ce3aaa7d7c15

Issue Description:

import Foundation

class Foo {
    @objc func foo() {
        _ = #selector(foo())
    }
}

call-selector.swift:5:13: error: argument of '#selector' does not refer to an '@objc' method, property, or initializer
        _ = #selector(foo())
            ^         ~~~~~

This is close to the correct syntax (#selector(foo)) and the compiler could help guide the user to this. This probably comes up most often with selectors for methods with no arguments (https://bugs.swift.org/browse/SR-1016).

Contributor guide