swiftlang/swift

[SR-9795] Cannot use `super` in lazy property: 'super' cannot be used outside of class members

Open

#52.220 geöffnet am 29. Jan. 2019

Auf GitHub ansehen
 (12 Kommentare) (0 Reaktionen) (1 zugewiesene Person)Swift (10.719 Forks)batch import
bugcompilergood first issue

Repository-Metriken

Stars
 (69.989 Stars)
PR-Merge-Metriken
 (Durchschn. Merge 8T 17h) (510 gemergte PRs in 30 T)

Beschreibung

Previous ID SR-9795
Radar None
Original Reporter @marcomasser
Type Bug

Tested with Swift 4.2.1 (Xcode 10.1) and Swift 5 from Xcode 10.2 beta (swiftlang-1001.0.45.7 clang-1001.0.37.7).

Votes 0
Component/s Compiler
Labels Bug, StarterBug
Assignee @theblixguy
Priority Medium

md5: 75741cacf781b9db21044152b379d272

Issue Description:

I’m not sure this is a bug or if this works as expected:

class Foo {
    var name = "Default Name"
}

class Bar: Foo {
    lazy var fullName: String = {
        return super.name // error: 'super' cannot be used outside of class members
    }()
}

Is there a good reason why super isn’t permitted here? Replacing super with self works fine, as I’d expect because the instance must be fully initialized when lazy properties are accessed.

Contributor Guide