En este simple fragmento de código, estoy usando el literal entero -1
en un contexto donde se espera un valor de tipo T
T
se ajusta a FixedWidthInteger
, por lo que se desconoce en el momento de la compilación si el literal se puede convertir al tipo real T
. Si T
se establece en un tipo de entero sin signo, el -1
simplemente se convierte en 0
. Hubiera esperado un error de tiempo de ejecución, o al menos una advertencia en tiempo de compilación. ¿Es esto un error o está documentado en alguna parte?
struct Bad<T: FixedWidthInteger> { func getNegativeOne() -> T { return -1 } } print(Bad<UInt32>().getNegativeOne())
Al ejecutarlo desde la respuesta swift
:
$ swift Welcome to Swift version 5.5.2-dev. Type :help for assistance. 1> [paste code] 0