swiftlang/swift

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

Open

#51 027 ouverte le 10 août 2018

Voir sur GitHub
 (2 commentaires) (0 réactions) (0 assignés)Swift (10 719 forks)batch import
bugcompilergood first issueparser

Métriques du dépôt

Stars
 (69 989 stars)
Métriques de merge PR
 (Merge moyen 7j 6h) (556 PRs mergées en 30 j)

Description

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 ,.

Guide contributeur