swiftlang/swift

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

Aberta

#52.220 aberto em 29 de jan. de 2019

 (12 comentários) (0 reação) (1 responsável)Swift (10.719 forks)batch import
bugcompilergood first issue

Métricas do repositório

Stars
 (69.989 estrelas)
Métricas de merge de PR
 (Métricas PR pendentes)

Description

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.

Guia do colaborador