swiftlang/swift

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

Open

#51.027 aberto em 10 de ago. de 2018

Ver no GitHub
 (2 comments) (0 reactions) (0 assignees)Swift (10.719 forks)batch import
bugcompilergood first issueparser

Métricas do repositório

Stars
 (69.989 stars)
Métricas de merge de PR
 (Mesclagem média 7d 6h) (556 fundiu PRs em 30d)

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

Guia do colaborador