mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
* spelling: appear Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: availability Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: available Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: coerce Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: collection Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: condition Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: conditional Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: delimiter Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: derived Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: diagnostics Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: disambiguation Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: dropped Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: escaped Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: existence Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: expression Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: expressions Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: extended Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: furthermore Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: identifier Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: indentation Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: inspect Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: miscellaneous Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: multiline Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: offset Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: passthrough Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: precede Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: prefix Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: receiver Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: reference Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: registered Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: representing Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: returned Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: sequence Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: should Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: successfully Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: that Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: the Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: trivia Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: unsupported Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> * spelling: whitespace Signed-off-by: Josh Soref <jsoref@users.noreply.github.com> Co-authored-by: Josh Soref <jsoref@users.noreply.github.com>
109 lines
3.4 KiB
Swift
109 lines
3.4 KiB
Swift
// RUN: %target-swift-frontend -parse -verify %s
|
|
|
|
/// Good
|
|
|
|
@transpose(of: foo)
|
|
func transpose(v: Float) -> Float
|
|
|
|
@transpose(of: foo(_:_:))
|
|
func transpose(v: Float) -> Float
|
|
|
|
@transpose(of: wrt, wrt: 0)
|
|
func transpose(v: Float) -> Float
|
|
|
|
@transpose(of: foo, wrt: 0)
|
|
func transpose(v: Float) -> Float
|
|
|
|
@transpose(of: foo, wrt: (0, 1))
|
|
func transpose(v: Float) -> (Float, Float)
|
|
|
|
@transpose(of: foo, wrt: (self, 0, 1, 2))
|
|
func transpose(v: Float) -> (Float, Float, Float, Float)
|
|
|
|
// Qualified declaration.
|
|
@transpose(of: A.B.C.foo(x:y:_:z:))
|
|
func transpose(v: Float) -> Float
|
|
|
|
// Qualified declaration with specialized generic type.
|
|
@transpose(of: A<T>.B<U, V>.C.foo(x:y:_:z:))
|
|
func transpose(v: Float) -> Float
|
|
|
|
// Qualified operator.
|
|
// TODO(TF-1065): Consider disallowing qualified operators.
|
|
@transpose(of: Swift.Float.+)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// Qualified leading-period operator (confusing).
|
|
// TODO(TF-1065): Consider disallowing qualified operators.
|
|
@transpose(of: Swift.Float..<)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// `init` keyword edge case.
|
|
@transpose(of: Swift.Float.init(_:))
|
|
func transpose(v: Float) -> Float
|
|
|
|
// `subscript` keyword edge case.
|
|
@transpose(of: Swift.Array.subscript(_:))
|
|
func transpose(v: Float) -> Float
|
|
|
|
/// Bad
|
|
|
|
// expected-error @+2 {{expected an original function name}}
|
|
// expected-error @+1 {{expected declaration}}
|
|
@transpose(of: 3)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+1 {{expected label 'wrt:' in '@transpose' attribute}}
|
|
@transpose(of: foo, blah)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+1 {{expected a colon ':' after 'wrt'}}
|
|
@transpose(of: foo, wrt)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+1 {{unexpected ',' separator}}
|
|
@transpose(of: foo,)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+2 {{expected ')' in 'transpose' attribute}}
|
|
// expected-error @+1 {{expected declaration}}
|
|
@transpose(of: foo, wrt: 0,)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+1 {{expected a parameter, which can be a function parameter index or 'self'}}
|
|
@transpose(of: foo, wrt: v)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// expected-error @+1 {{expected a parameter, which can be a function parameter index or 'self'}}
|
|
@transpose(of: foo, wrt: (0, v))
|
|
func transpose(v: Float) -> Float
|
|
|
|
// NOTE: The "expected ',' separator" diagnostic is not ideal.
|
|
// Ideally, the diagnostic should point out that `Swift.Float.+(_:_)` is
|
|
// not a valid declaration name (missing colon after second argument label).
|
|
// expected-error @+2 {{expected ',' separator}}
|
|
// expected-error @+1 {{expected declaration}}
|
|
@transpose(of: Swift.Float.+(_:_))
|
|
func transpose(v: Float) -> Float
|
|
|
|
// NOTE: The "expected ',' separator" diagnostic is not ideal.
|
|
// Ideally, the diagnostic should point out that `Swift.Float.+.a` is
|
|
// not a valid declaration name.
|
|
// expected-error @+2 {{expected ',' separator}}
|
|
// expected-error @+1 {{expected declaration}}
|
|
@transpose(of: Swift.Float.+.a)
|
|
func transpose(v: Float) -> Float
|
|
|
|
// TF-1168: missing comma before `wrt:`.
|
|
// expected-error @+2 {{expected ',' separator}}
|
|
// expected-error @+1 {{expected declaration}}
|
|
@transpose(of: foo wrt: x)
|
|
func transpose(v: Float) -> Float
|
|
|
|
func testLocalTransposeRegistration() {
|
|
// Transpose registration can only be non-local.
|
|
// expected-error @+1 {{attribute '@transpose' can only be used in a non-local scope}}
|
|
@transpose(of: +)
|
|
func transpose(_ x: Float) -> (Float, Float)
|
|
}
|