Commit Graph

21693 Commits

Author SHA1 Message Date
Doug Gregor
84a4c08f1d Factor the computation of the 'self' type into an easier-to-use place.
Swift SVN r9973
2013-11-05 22:51:17 +00:00
Anna Zaks
54524e622a Replace ExprStmtOrDecl with ASTNode and make it a struct.
Previously, the Parser and BranchStmt typedef-ed ExprStmtOrDecl as a pointer union. Using typedef made the objects compatible, but did not allow us to extend the type with helper methods, such as getSourceRange(), which is something you can get on all of the AST objects. This patch introduces ASTNode that subclasses from PointerUnion and is used by both parser and BranchStmt.

Swift SVN r9971
2013-11-05 21:46:59 +00:00
Doug Gregor
0107e36e8b Allow models to omit witnesses for optional protocol requirements.
Swift SVN r9962
2013-11-05 16:28:34 +00:00
Doug Gregor
e5ca2c90d0 Parse @optional attribute on protocol members.
Swift SVN r9959
2013-11-05 15:58:19 +00:00
Adrian Prantl
15d5388b78 typo
Swift SVN r9954
2013-11-05 03:05:20 +00:00
Dmitri Hrybenko
2e53423e33 ASTContext: add "the one true way" to get the stdlib module
Swift SVN r9952
2013-11-05 01:40:24 +00:00
Anna Zaks
16774496fd [SILGen] Emit warnings when SILGen fails to emit unreachable code.
Previously, we just did not emit SIL for unreachable code from these examples.

Swift SVN r9949
2013-11-05 01:17:14 +00:00
Jordan Rose
b43dd09107 All SourceFiles should always remember their buffer IDs, not just imports.
Swift SVN r9946
2013-11-04 23:50:48 +00:00
Doug Gregor
f7e285d9b3 Revert r9937; getInnermostDeclContext() doesn't do what we need
Swift SVN r9942
2013-11-04 23:44:27 +00:00
Doug Gregor
25b604fe82 getInnermostDeclContext() is already better than getPotentialGenericDeclContext().
Swift SVN r9939
2013-11-04 23:17:43 +00:00
Dmitri Hrybenko
2e2f651f10 @objc inference: we don't ever infer @objc on a protocol
Swift SVN r9937
2013-11-04 23:14:41 +00:00
Doug Gregor
ce104ed48b Introduce ValueDecl::getPotentialGenericDeclContext()
This little "find the context where the generic parameters could be"
idiom was copy-pasted in a few places, which is ugly. And if we get
generic subscripts (or some other generic value decl), we'll be sorry.


Swift SVN r9927
2013-11-04 18:21:16 +00:00
Chris Lattner
68af974227 Remove 'axle' related code and build machinery. It turns out that we
will not be pursuing this project in the immediate future.



Swift SVN r9901
2013-11-03 16:04:27 +00:00
Dmitri Hrybenko
91ce21666d Change 'func' keyword to 'def'
I tried hard find all references to 'func' in documentation, comments and
diagnostics, but I am sure that I missed a few.  If you find something, please
let me know.

rdar://15346654


Swift SVN r9886
2013-11-02 01:00:42 +00:00
Mark Lacey
915209b4f9 Add IITDescriptor::VarArg case to DecodeIntrinsicType().
LLVM rev r193766 adds this new descriptor kind. Update the switch
to squelch the warning about an unhandled enum value.

Swift SVN r9868
2013-11-01 05:46:27 +00:00
Greg Parker
beaa56d8e9 Add Builtin.Word and use it to implement swift.Word.
Swift SVN r9864
2013-11-01 00:11:22 +00:00
Doug Gregor
1082ea51a0 Actual use location information when looking for local variables.
This addresses the bulk of <rdar://problem/15344950>, which involes us
not being able to find local variable declarations in expressions when
the parser didn't pre-bind them for us.

The fix to name lookup itself insures that a case such as 
  case (var a, a)

doesn't allow the second 'a' to find the first.


Swift SVN r9858
2013-10-31 22:56:02 +00:00
Joe Groff
d873764add Sema: Allow an implicit conversion from T? to U? if T can be converted to U.
Similar to the T -> U? conversion, allow T? to be converted to U? through a bind-convert-inject chain. Naively adding this conversion creates ambiguities in the type checker, opening up multiple paths to the same solution in certain cases, so add a a special case to the solver that avoids introducing the conversion if a solution is already available by other means. (Doug figured out that part; thanks Doug!)

This still introduces a regression in test/Constraints/optional.swift, rendering a call ambiguous when overloaded on argument types. <rdar://problem/15367036>

Swift SVN r9857
2013-10-31 22:51:36 +00:00
Doug Gregor
f342493144 Give every declaration an interface type.
For declarations that aren't generic and aren't in a generic context,
the interface type is the same as the normal type.


Swift SVN r9847
2013-10-31 17:38:42 +00:00
Dmitri Hrybenko
8be81e8bfd @objc inference: add tests for inferring @objc on a class
Swift SVN r9837
2013-10-31 01:45:00 +00:00
Dmitri Hrybenko
1abce88392 AST Printer / @objc: print @objc(inferred) for constructors and destructors
Swift SVN r9833
2013-10-31 01:01:29 +00:00
Dmitri Hrybenko
324e6940c4 AST Printer / @objc: print @objc(inferred) for stored properties
Swift SVN r9832
2013-10-31 00:50:21 +00:00
Dmitri Hrybenko
b306d2a26b AST Verifier: check that only VarDecls and SubscriptDecls can be considered
parents of getters and setters


Swift SVN r9830
2013-10-31 00:05:55 +00:00
Doug Gregor
7b5fc3f3f8 Make the interface types of nominal types be a metatype.
All other interface types for type declarations were already
metatypes, as they should be; this oddity crept in. Kill it before it
causes more confusion.


Swift SVN r9826
2013-10-30 23:40:31 +00:00
Dmitri Hrybenko
a1b1be735a AST Printer: print inferred @objc attributes for variables, properties, and
getters/setters


Swift SVN r9822
2013-10-30 23:07:33 +00:00
Doug Gregor
77264dc10f Give associated type declarations interface types.
This required moving a gross hack from the old archetype-based
type-opening code over to the new, generic type parameter-based
type-opening code. We need the ability to build conformances for types
involving type variables to address this case properly.


Swift SVN r9821
2013-10-30 22:53:28 +00:00
Dmitri Hrybenko
b09cf2aa5c AST Verifier: if a BraceStmt (including function body brace stmt) is marked as
implicit, we should not verify source locations with this patch.

LLDB creates ASTs that contain some pieces of AST that came from the parser,
and some other pieces that were synthesized.  AST Verifier complains about this
strange mix while checking source ranges.

rdar://15320934


Swift SVN r9819
2013-10-30 22:10:08 +00:00
Argyrios Kyrtzidis
e31c93add3 [AST] The ASTContext parameter in FuncDecl::getResultType() is not really needed.
Swift SVN r9798
2013-10-30 17:09:56 +00:00
Doug Gregor
f473246f56 Dump associated type declarations
Swift SVN r9780
2013-10-30 04:13:20 +00:00
Dmitri Hrybenko
8218c411ff Don't cache the result of ProtocolDecl::requiresClass() if the type checker did
not calculate the inherited protocols yet


Swift SVN r9774
2013-10-30 00:34:23 +00:00
Dmitri Hrybenko
840b3a955e Verifier: add a missing call to the more general check function
(Right now it does nothing, but it could change in future.)


Swift SVN r9747
2013-10-29 02:11:25 +00:00
Doug Gregor
df44269a80 Eliminate more PolymorphicFunctionType uses from the type checker.
Swift SVN r9721
2013-10-28 20:22:26 +00:00
Doug Gregor
f172e93102 Set the 'super' bit on function applications harder.
Swift SVN r9719
2013-10-28 20:06:13 +00:00
Doug Gregor
112c6123eb Terminate SpecializeExpr with extreme prejudice.
There are numerous other cleanups that could be performed now that
this is gone; I'll follow up with some of them.


Swift SVN r9717
2013-10-28 18:50:29 +00:00
Dmitri Hrybenko
9e346b6b80 Clean up implicit import code: use SmallVector instead of a plain array
Swift SVN r9716
2013-10-28 18:43:46 +00:00
Doug Gregor
731fe651e7 Teach OtherConstructorDeclRefExpr to track substitutions.
Eliminates another source of SpecializeExprs.


Swift SVN r9714
2013-10-28 18:35:49 +00:00
Doug Gregor
3b37cbab4f Dump interface types for any value declaration.
Swift SVN r9687
2013-10-26 03:02:07 +00:00
Jordan Rose
fc88c5dae6 Operators imported in one source file shouldn't affect another one.
Previously we would cache the results of operator lookup whether or not the
operator we found came from an imported module. Since different source files
can have different imports, it's not correct to automatically share operators
from imported modules with all files in the translation unit.

This still isn't fully correct; the current logic prefers operators from
local imports over operators implicitly available from other source files.

Swift SVN r9683
2013-10-25 22:21:14 +00:00
Jordan Rose
ec4234bdbc Perform unqualified lookup using the current SourceFile as context.
And, properly treat imports as per-file: when looking up decls through the
TU module, don't pick up every other source file's imports.

This implements our resolution rules:
1. Check the current source file.
2. Check the current module.
3. Check imported modules.

Currently, "import Foo" is treated as a file-private import and
"@reexported import Foo" is treated as a public /and/ module-wide import.
This further suggests that access control is the right tool for re-export
control:

(private) import Foo // current file only
package import Foo   // whole module
public import Foo    // whole world

Swift SVN r9682
2013-10-25 22:21:12 +00:00
Doug Gregor
499deabae9 Infer the generic arguments from context in variables, closure parameters.
This allows us to say roughly what generic type we want without having
to specify all of the details, e.g., 

   var dict : Dictionary = ["Hello" : 1, "World" : 2] 
   // infers Dictionary<String, Int>

Fixes <rdar://problem/14238814>.


Swift SVN r9678
2013-10-25 21:53:52 +00:00
Doug Gregor
a7664fda78 Clean up the checking of pattern binding declarations.
Eliminate the annoying, rarely-firing "while converting 'var' initial
value to declared type" note. We'll eventually have better ways to
deal with this. Otherwise, no functionality change.


Swift SVN r9677
2013-10-25 21:14:03 +00:00
Joe Groff
054055973a Sema: Handle negative raw values for enum cases.
The keying and auto-incrementing logic need some patching up to correctly track and build negative IntegerLiteralExprs. Fixes <rdar://problem/15315340>.

Swift SVN r9676
2013-10-25 18:50:55 +00:00
Jordan Rose
64e0b2200a Make sure to resolve library intrinsics before using them.
Otherwise, compiling the standard library will try to use, say,
_getOptionalValue() before that function has any type.

Swift SVN r9671
2013-10-25 17:30:41 +00:00
Jordan Rose
28e01f3c3a Eliminate "MainSourceFile" from TranslationUnit in favor of an array.
Anywhere that assumes a single input file per TU now has to do so explicitly.
Parsing still puts all files in a single SourceFile instance; that's next on
the list.

There are a lot of issues still to go, but the design is now in place.

Swift SVN r9669
2013-10-25 17:30:37 +00:00
Jordan Rose
cf31df96c5 Push operator lookup into SourceFile, and simplify the interface.
The operator lookup cache already lived in SourceFile, but we need to be
able to look up operators on a per-SourceFile basis. Different files can
have different imports. The interface previously distinguished between
"no operator found" and "error", but none of the call sites were making
use of this distinction, and indeed some were misusing the return value
(Optional<SomeOperatorDecl *>). Now the lookup functions just return
operator decl pointers, which may be null.

Swift SVN r9668
2013-10-25 17:30:33 +00:00
Doug Gregor
8ea71f06a7 Teach ExistentialMemberRefExpr to handle all levels of substitutions.
Another SpecializeExpr usage bites the dust.


Swift SVN r9665
2013-10-25 00:02:36 +00:00
Doug Gregor
10164fa56c Teach ArchetypeMemberRefExpr to handle all levels of substitutions.
Eliminates another source of SpecializeExprs.


Swift SVN r9655
2013-10-24 21:44:45 +00:00
Jordan Rose
2aeba96d53 Use SourceFile in a few more places.
- Local name lookup
- AST verification
- Delayed parsing
- Type checker, for the file kind
- Context of synthesized REPL decls

Swift SVN r9648
2013-10-24 18:59:26 +00:00
Jordan Rose
766f41f266 Put top-level decls in the SourceFile DeclContext, rather than in the TU.
Swift SVN r9647
2013-10-24 18:59:24 +00:00
Jordan Rose
0702acab3d Make SourceFile a DeclContext, but don't actually do anything with it yet.
Swift SVN r9646
2013-10-24 18:59:21 +00:00