Swiftの廃止になったコンパイルエラー

公開しても特にメリットがあるものではないが、間違えて公開を押してしまった。

Prefix/Postfix '***' is reserved
前置/後置演算子の***は予約されています
【出現ver】Swift 2.1
【非出現ver】Swift 3.1
【このコンパイルエラーに変更になりました】'***' must have consistent whitespace on both sides

var abc =5 //エラー
var def= 10 //エラー
決められた正しい使われ方をしていない。
=の前後のスペースの取り方が統一されてない。開けるなら左右とも開ける、閉じるなら左右とも閉じる。



All stored properties of a class instance must be initialized before returning nil from an initializer
イニシャライザからnilで返る前に、クラスインスタンスの全てのストアドプロパティを初期化しないといけない
【出現ver】Swift 2.1
【非出現ver】Swift 3.1

class ClassA {
    var a: String
    init?(a: String?) {
        if a == nil {
            return nil //エラー
        }
        self.a = ""
    }
}
Swift 3.1ではエラーにならなかった。仕様変更か。



Cannot assign to 'let' value '〜'
letで宣言した定数に値を代入しようとした
【出現ver】Swift 2.1より前
【非出現ver】Swift 2.1
Cannot assign to value: '***' is a 'let' constantに変更になった



Cannot assign to immutable value of type '***'
変更できない型'***'に代入できません
【出現ver】Swift 2.1より前
【非出現ver】Swift 2.1
他のメッセージに変更になった。

var abc: Bool
var abc2: Bool = true
if abc = abc2 {
}
let忘れか、=忘れか、C言語方式で代入結果を用いようとしたか。
immutableとあるのでabcをif letブロック内のローカル定数と想定か。



Cannot assign to the result of this expression
この表現の(コンパイラによる解析の)結果には代入することは出来ません
【出現ver】Swift 2.1より前
【非出現ver】Swift 2.1
以前出た。let宣言された配列の要素を変更しようとしたら出た。Cannot assign through subscript: '***' is a 'let' constantに変更になった



'let' declarations require an initializer expression
letで宣言した定数に初期値が与えられていない
このエラーは以前のバージョンで出ました。
【非出現ver】Swift1.2

let abc: Int
以前のバージョンではlet宣言時に値確定が必要でした。1.2ではこの制限が外されています。



Use of property '〜' in base object before super.init initializes it
base object(継承してきたオブジェクト)の'〜'がsuper.initで初期化する前に使われようとしました
このエラーは以前のバージョンで出ました。
【非出現ver】Swift1.2



Could not find an overload for '__conversion' that accepts the supplied arguments
与えられた引数での変換は用意されていません
型の変換をしようとしましたが、与えられた「変換元」と「変換先」の組み合わせの処理は出来ません。
【確認ver】Swiftのベータバージョン



Cannot find an initializer for type '[(A〜)]' that accepts an argument list of type '(count: Int, repeatedValue: B〜)'
(count: Int, repeatedValue: B〜)という引数リストを受け付ける初期化メソッドは[(A〜)]には見つかりません。
以前出た。Cannot invoke initializer for type '[A***]' with an argument list of type '(count: Int, repeatedValue: B〜)'に変更になった。



Definition conflicts with previous value
すでに宣言してある値と定義衝突する
【確認ver】Swift 2.1【語】definition 定義 conflict 衝突
【非出現ver】Swift 3.1
【このコンパイルエラーに変更になりました】Invalid redeclaration of '***'
定義しようとしているものはすでに定義済。

var abc = 0
var abc = 1 //エラー



Cannot convert the expression's type '〜' to type '〜'
異なる型へ代入しようとしている
【確認ver】Swiftのベータバージョン
【非出現ver】Swift1.0



Address of variable '〜' taken before it is initialized
'〜'のアドレスが使う前に初期化されていない
【確認ver】Swift1.2より前
【非出現ver】Swift1.2



Cannot assign a value of type 'nil' to a value of type '〜'
nilを〜に代入できません
【確認ver】Swift2.1より前
【非出現ver】Swift2.1
【このコンパイルエラーに変更になりました】Nil cannot be assigned to type '〜'



'〜' is not a subtype of 〜
〜は〜のサブタイプではありません
【確認ver】Swift1.2より前
【非出現ver】Swift1.2
キャストできない状況など

var a = 5
if a is Double { //エラー
}

var a: Int = 5
var b = a as? Double //エラー



Braced block of statements is an unused closure
カッコで囲まれた使われないクロージャ
【確認ver】Swift 2.1
【非出現ver】Swift4.0
【このコンパイルエラーに変更になりました】Closure expression is unused
{}などで囲まれた部分が何かの原因で無効?
{}より前で何か問題がある場合にも出る

func testFuncAAA() {
    {
        var a = 0
    }
}
意味の無い{}囲み

infix operator +-(a: Int, b: Int) {} //エラー
演算子の宣言では引数がいらないのでそこでコンパイラが処理できない。その後の{}で当エラー。


コメント

このブログの人気の投稿

Swiftのコンパイルエラー寄せ集め

Swift2.2からSwift3.0への変換を行ってみて

AVAudioSession細かいことまとめ(late 2014)