Commit Graph

10 Commits

Author SHA1 Message Date
Pavel Yaskevich
352f4b7f73 [Diagnostics] SR-2484: Improve diagnostic for incorrectly called private init 2016-10-15 02:35:27 -07:00
John McCall
3fc2291733 Add basic typo correction for unqualified lookup.
There's a lot of room for better QoI / performance here.
2016-05-20 11:04:58 -07:00
Chris Lattner
4341ef35cd Move CalleeCandidateInfo to using NameLookupFlags::IgnoreAccessibility
for initializer lookup, allowing it to produce more specific diagnostics
when referring to a private initializer that the compiler can see.

In addition to improving diagnostics, this allows us to eliminate the
NoPublicInitializers failure kind.
2016-01-19 22:52:26 -08:00
Chris Lattner
8a41d14b2d Fix <rdar://problem/21429694> QoI: diagnostic for accessing private methods could be improved
When member lookup completely fails and when CSDiags is the one performing
the lookup, reissue another lookup that ignores access control.  This allows
it to find inaccessible members and diagnose them as such, instead of pretending
we have no idea what the user wants.  We now produce an error message like this:

main.swift:1:6: error: 'foo' is inaccessible due to 'private' protection level
 C().foo()
     ^
test.swift:1:35: note: 'foo' declared here
  internal class C { private func foo() {} }
                                  ^

instead of:

main.swift:1:2: error: value of type 'C' has no member 'foo'
 C().foo()
 ^~~ ~~~
2016-01-17 17:13:07 -08:00
Jordan Rose
8770a8f6f7 [Sema] Allow "redeclarations" within a module if both declarations are private.
While we could allow declarations with the same name and type if all but one
are private, it feels a bit subtle that one declaration at top-level scope can
shadow another declaration at top-level scope elsewhere in the module. Let's
start with this for now.

Currently guarded by -enable-private-discriminators.

Part of rdar://problem/17632175

Swift SVN r21602
2014-08-30 00:17:24 +00:00
Jordan Rose
0c28c9c220 Add a test verifying that conformance checking respects access control.
<rdar://problem/17632316>

Swift SVN r20503
2014-07-24 17:58:23 +00:00
Jordan Rose
14196453cc Add a special diagnostic when a type has no accessible initializers.
Rather than just saying "'Foo' is not constructible with '()'", say
"'Foo' cannot be constructed because it has no accessible initializers",
which would help framework authors realize what they did wrong.

<rdar://problem/17717714>

Swift SVN r20232
2014-07-20 19:52:24 +00:00
Jordan Rose
ac90133b8c Update tests for accessibility modifiers becoming context-sensitive keywords.
Swift SVN r19673
2014-07-08 02:17:49 +00:00
Jordan Rose
76b24307a4 [Accessibility] Add some basic tests for member lookup.
This has been working for a while; there just weren't explicit tests for it.

Swift SVN r19621
2014-07-07 18:39:36 +00:00
Jordan Rose
a7b563855e Add a mode in which access control is respected for module-scope lookups.
This applies to both qualified and unqualified lookups, and is controlled
by the -enable-access-control and -disable-access-control flags. I've
included both so that -disable-access-control can be put into specific tests
that will eventually need to bypass access control (e.g. stdlib unit tests).
The default is still -disable-access-control.

Swift SVN r19146
2014-06-24 21:32:21 +00:00