2014-07-22 31 views
9

Perché ottengo un errore quando aggiungo enum di classe generica:Errore di generazione Xcode quando aggiungo enum alla classe generica?

class TestClass<T>{ 
    enum TestEnum { 
     case test 
    } 
} 

Errore:

1. While type-checking 'ExampleTest' at /Users/xxx/xxx/xx/xx/ExampleTest.swift:11:1 
<unknown>:0: error: unable to execute command: Segmentation fault: 11 
<unknown>:0: error: swift frontend command failed due to signal (use -v to see invocation) 
Command /Applications/Xcode6-Beta3 2.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift failed with exit code 254 

Ma non ottengo un errore quando faccio questo:

class TestClass{ 
    enum TestEnum { 
     case test 
    } 
} 

o questo:

class TestClass<T>{ 
} 
+2

I tuoi primi due esempi sono esattamente identici - è possibile che tu abbia postato lo stesso snippet due volte? – weltraumpirat

+0

Errore del compilatore con la combinazione di classe generica e enumerazione nidificata. [Invia un bug report] (https://bugreport.apple.com/) e deseleziona l'enumerazione per ora come soluzione alternativa. –

+0

@weltraumpirat Grazie, corretto l'esempio. – Jimmy

risposta

20

Non è possibile nidificare alcun tipo all'interno di uno generico e viceversa. In altre parole, non si possono fare cose come queste per le classi, le strutture e le enumerazioni:

e

class Outer { 
    class Inner<T> { } 
} 

e anche

class Outer<T> { 
    class Inner<T> { } 
} 

folks di Apple explained la ragione per la restrizione:

It's an implementation limitation. We'll remove the restriction once our compiler and runtime are able to correctly handle types nested in generic contexts.

P.S. Scusa se invio la risposta così tardi ma il problema è ancora presente (XCode 6.2).

C'è stato un molto simile question, a proposito.

+3

Swift 3.1 e XCode 8.3.2 supportano questo ora –

Problemi correlati