swiftlang/swift

[SR-8507] 'foo bar' could have fixit suggesting missing . rather than just ; or ,

Open

#51.027 aperta il 10 ago 2018

Vedi su GitHub
 (2 commenti) (0 reazioni) (0 assegnatari)Swift (10.719 fork)batch import
bugcompilergood first issueparser

Metriche repository

Star
 (69.989 star)
Metriche merge PR
 (Merge medio 7g 6h) (556 PR mergiate in 30 g)

Descrizione

Previous ID SR-8507
Radar rdar://problem/25290712
Original Reporter @huonw
Type Bug

Master at 2018-08-09

Votes 0
Component/s Compiler
Labels Bug, Parser, StarterBug
Assignee None
Priority Medium

md5: 2e0b2de995cd56da9923536462d8ef0c

Issue Description:

For instance, in the following code, the mistake is missing the ., not missing a ;

struct Foo {
    var bar = 0
}

let foo = Foo()

let something = 1 + foo bar 
foo bar = 1
print(foo bar)

The errors for each of the three invalid lines are:

space.swift:7:24: error: consecutive statements on a line must be separated by ';'
let something = 1 + foo bar 
                       ^
                       ;
space.swift:7:19: error: binary operator '+' cannot be applied to operands of type 'Int' and 'Foo'
let something = 1 + foo bar 
                ~ ^ ~~~
space.swift:7:19: note: expected an argument list of type '(Int, Int)'
let something = 1 + foo bar 
                  ^
space.swift:7:25: error: use of unresolved identifier 'bar'
let something = 1 + foo bar 
                        ^~~
space.swift:8:4: error: consecutive statements on a line must be separated by ';'
foo bar = 1
   ^
   ;
space.swift:8:1: warning: expression of type 'Foo' is unused
foo bar = 1
^~~
space.swift:8:5: error: use of unresolved identifier 'bar'
foo bar = 1
    ^~~
space.swift:9:11: error: expected ',' separator
print(foo bar)
          ^
         ,
space.swift:9:11: error: use of unresolved identifier 'bar'
print(foo bar)
          ^~~

If it looks like an property access (or even a method call) might be valid (i.e. the thing after the space is an identifier), the compiler could guess at using . rather than/as well as ; or ,.

Guida contributor