アクセス修飾子周りでSwiftのバグっぽいのみつけた
Swiftのバージョンは3.0
ViewController.swift
import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() print(TypeA.name) } }
ProtocolA.swift
import Foundation private protocol ProtocolA { } extension ProtocolA { static var name: String { return "aaa" } } struct TypeA: ProtocolA { }
でビルドしようとするとこんなエラーが出る
Undefined symbols for architecture arm64: "protocol witness table for BugTestProj.TypeA : BugTestProj.(ProtocolA in _ED3794DE2981E83EA71158CCFF2975C6) in BugTestProj", referenced from: BugTestProj.ViewController.viewDidLoad () -> () in ViewController.o "static (extension in BugTestProj):BugTestProj.(ProtocolA in _ED3794DE2981E83EA71158CCFF2975C6).name.getter : Swift.String", referenced from: BugTestProj.ViewController.viewDidLoad () -> () in ViewController.o ld: symbol(s) not found for architecture arm64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
ProtocolAはprivateなので、そこに定義されてるメソッド/プロパティには外からアクセスできないんじゃないかなーと思うんだけどどうなんだろう。
バグレポートは送った。