2017-10-12 1 views
1

Hintergrund: Der Versuch, große 100k Codebase von Swift 2.3 auf Swift 4 zu aktualisieren. Machte gute Fortschritte, behoben ~ 1000 Fehler. Dann, nach dem Ändern eines unserer DTO-Objekte, um Any anstelle von AnyObject zu verwenden (weil wir mussten), begann der Compiler zu hängen.Xcode 9 Compiler hängt an Datei ohne Warnungen oder Fehler

Problem: Beim kompilieren wird die Anwendung zu einer bestimmten Datei und nur stecken bleiben (auch nach 24 Stunden). Es ist nicht eingefroren nur stecken kompiliert. Ich habe versucht, die Datei temporär zu entfernen, aber dann wird es nur in einer anderen Datei stecken und so weiter und so weiter.

Forschung & Versuche Ich habe auf dem Compiler lesen und wie auf Warnungen und Fahnen drehen. Ich habe versucht, -Xfrontend -debug-time-function-bodies und -Xfrontend Xfrontend -warn-long-expression-type-checking betrachten, aber nichts kommt. Wenn ich das Build-Transkript für die Datei anschaue, auf der es gespeichert ist, gibt es im erweiterten Transkript keine Informationen.

Weißt du, was ich noch überprüfen kann? Ich vermute, dass es etwas mit seiner Unfähigkeit zu tun hat, auf den Typ zu schließen, der gegeben ist, wie viele Wörterbücher wir haben, aber ohne bessere Informationen zu bekommen, habe ich keine Ahnung, wohin ich von hier gehen soll.

Wissen Sie, wie ich Informationen darüber bekommen kann, warum es in dieser Datei stecken bleibt und keine Warnungen gegeben werden?

+2

Ich bezweifle, zu kompilieren, bekommen, dass Der Swift 4-Migrator kann direkt von Swift 2 auf 4 migrieren. Der erste Satz in [Pre-Migration Preparation] (https://swift.org/migration-guide-swift4/) lautet: * Stellen Sie sicher, dass das Projekt, das Sie verwenden beabsichtigen, Builds im Swift 3.2-Modus erfolgreich zu migrieren *. Das heißt, Sie sollten zuerst auf Swift 3 aktualisieren – vadian

+0

Ich habe eine schnelle Konvertierung zu Swift 3, aber ich habe die Fehler in. Nachdem es konvertiert wurde, öffnete ich dann in Swift 4. Danach fing ich an, Fehler zu beheben. Nach Ihrem Vorschlag sollte ich es vielleicht vollständig in 3.2 einbauen. Ich werde das in Dank sehen. – Aggressor

Antwort

0

Um followup, es dauerte mehrere Tage, aber zuerst Swift 3.2 und dann Swift 4 konnte ich (Auskommen meisten Code später zu lösen) Umwandeln es in Xcode 9.