Commit Graph

2563 Commits

Author SHA1 Message Date
Doug Gregor
72afb17c25 s/constructor/init/g in tests and a few diagnostics.
Swift SVN r8394
2013-09-18 05:36:39 +00:00
Doug Gregor
978959ced8 Make the "init" and "constructor" keywords synonymns.
Swift SVN r8391
2013-09-18 04:23:28 +00:00
Doug Gregor
81040f0ded Rename some "init"s to "initialize"; the former will become a keyword soon.
Swift SVN r8379
2013-09-18 00:43:26 +00:00
Doug Gregor
90b8b3e499 Constructor selectors always start with 'init'.
Implement the new rules for mapping between selector names and
constructors. The selector for a given constructor is formed by
looking at the names of the constructor parameters:
  * For the first parameter, prepend "init" to the parameter name and
  uppercase the first letter of the parameter name. Append ':' if
  there are > 1 parameters or the parameter has non-empty-tuple type.
  * For the remaining parameters, the name of each parameter followed
  by ':'.

When a parameter doesn't exist, assume that the parameter name is the
empty string.

And, because I failed to commit it separately, support selector-style
declarations of constructor parameters so that we can actually write
constructors nicely, e.g.:

  // selector is initWithFoo:bar:
  constructor withFoo(foo : Foo) bar(bar : Bar) { ... }



Swift SVN r8361
2013-09-17 22:49:05 +00:00
Stephen Lin
dfb4c976a0 s/Destructed/Destructured/g
Swift SVN r8348
2013-09-17 20:32:49 +00:00
Argyrios Kyrtzidis
f34166c319 [AST] For SubscriptDecl and ConstructorDecl, have the getLoc() point at the 'subscript'/'constructor' respectively, not at their first parameter.
Swift SVN r8346
2013-09-17 19:52:13 +00:00
Dmitri Hrybenko
a11f623a47 Code completion: partial type checking of constructor bodies
Swift SVN r8343
2013-09-17 18:45:51 +00:00
Dmitri Hrybenko
07e83ea49c Code completion: basic completion in constructor bodies
Swift SVN r8338
2013-09-17 18:20:26 +00:00
Stephen Lin
2b509fc32c Use visitor to avoid O(N^2) behavior when getting destructured Swift argument types for computing partial apply result type
Swift SVN r8337
2013-09-17 17:16:14 +00:00
Argyrios Kyrtzidis
420cab9bc3 [AST] Move the NameLoc source location from ValueDecl's subclasses into ValueDecl itself.
Swift SVN r8332
2013-09-17 15:34:52 +00:00
John McCall
cb06e316d0 Add CanBoundGenericType::getGenericArgs().
Swift SVN r8329
2013-09-17 07:22:26 +00:00
John McCall
90366645f0 Permit local arrays to be copied into an ASTContext.
Swift SVN r8327
2013-09-17 07:22:24 +00:00
Dmitri Hrybenko
dedffc69b4 Remove a reference to FuncExpr in a comment
Swift SVN r8324
2013-09-17 02:18:57 +00:00
Dmitri Hrybenko
0900e992b9 Simplify AnyFunctionRef::getAsDeclContext()
Swift SVN r8322
2013-09-17 01:39:45 +00:00
Dmitri Hrybenko
f1f189f4e0 Rename PipeClosureExpr -> ClosureExpr
Swift SVN r8321
2013-09-17 01:37:36 +00:00
Joe Groff
000d8e4953 Runtime: Add functions for dynamic single-payload dispatch.
Add functions to dynamically query the extra inhabitants of a single-payload union's payload metadata, then identify or store bit patterns used to represent empty cases, whether they happen to use extra inhabitants or added tag bits.

Swift SVN r8320
2013-09-17 01:29:35 +00:00
Dmitri Hrybenko
64cb7058e4 Add AnyFunctionRef::getArgParamPatterns()
... and simplify getFuncNaturalUncurryLevel() with it


Swift SVN r8317
2013-09-17 01:13:42 +00:00
Dmitri Hrybenko
c32b783740 Move closure parameter pattern to AbstractClosureExpr
Swift SVN r8316
2013-09-17 01:08:50 +00:00
Stephen Lin
694f56e2a1 Implement helper to compute partial apply return type; insert convert_function as necessary where this type does not match the needed type
Swift SVN r8315
2013-09-17 00:39:17 +00:00
Dmitri Hrybenko
a35edf252d AnyFunctionRef: add an assertion that it wraps a non-null AST node
Swift SVN r8312
2013-09-17 00:15:13 +00:00
Dmitri Hrybenko
9636b9fffb Migrate the last use of FuncExprLike to AnyFunctionRef
Swift SVN r8309
2013-09-16 23:54:29 +00:00
Dmitri Hrybenko
34a703a173 Move PipeClosureExpr::getResultType to AbstractClosureExpr
Swift SVN r8308
2013-09-16 23:45:45 +00:00
Argyrios Kyrtzidis
d0d0978e19 [AST] Fix the parents in a few entries in DeclNodes.def.
Where's tablegen when you need it..

Swift SVN r8306
2013-09-16 23:37:23 +00:00
Argyrios Kyrtzidis
09c8bb7740 [AST] NominalTypeDecl is an abstract node, move its constructor to 'protected' access.
Swift SVN r8305
2013-09-16 23:37:22 +00:00
Dmitri Hrybenko
b18c38a322 Rename ImplicitClosureExpr -> AutoClosureExpr
Swift SVN r8304
2013-09-16 23:03:50 +00:00
Dmitri Hrybenko
10291e0334 Make AbstractClosureExpr a DeclContext
(remove DeclContext base class from PipeClosureExpr and ImplicitClosureExpr)


Swift SVN r8303
2013-09-16 22:39:12 +00:00
Dmitri Hrybenko
f2cc4cb303 Rename CapturingExpr -> AbstractClosureExpr
Swift SVN r8299
2013-09-16 21:58:44 +00:00
Dmitri Hrybenko
3354dd402b Unify two implementations of TypeChecker::computeCaptures()
Swift SVN r8296
2013-09-16 21:17:00 +00:00
Dmitri Hrybenko
f8bd657b2f ImplicitClosureExpr (AutoClosureExpr in future): store body as BraceStmt
This allows us to add AnyFunctionRef::getBody(), which returns the body
as a BraceStmt for every function-like AST node.


Swift SVN r8293
2013-09-16 20:52:12 +00:00
Argyrios Kyrtzidis
61b4e8ede5 [Lexer] Add some comments for Lexer::getLocForStartOfToken().
Swift SVN r8288
2013-09-16 19:32:13 +00:00
Argyrios Kyrtzidis
5db368ce7b [Lexer] Introduce Lexer::getLocForStartOfToken() that returns the location at the start of the token that a given offset points to.
Swift SVN r8281
2013-09-16 18:41:16 +00:00
Dmitri Hrybenko
e7af4d6c72 Collapse ImplicitClosureExpr into its abstract base class, ClosureExpr
Swift SVN r8280
2013-09-16 18:31:05 +00:00
Stephen Lin
b0cdee2b9b Move SILBuilder::getTupleElementType and SILBuilder::getStructFieldType to SILBuilder.cpp
Swift SVN r8279
2013-09-16 18:19:14 +00:00
Dmitri Hrybenko
45448d04b2 Clarify comment per review
Swift SVN r8277
2013-09-16 18:04:07 +00:00
Dmitri Hrybenko
bbed45f0f9 Add a comment for AbstractFunctionDecl::getBody()
Swift SVN r8276
2013-09-16 17:54:12 +00:00
Chris Lattner
74bf9c98c6 change the CaptureInfo::getLocalCaptures() method to return a SmallVector
by reference, avoiding allocating heap memory.



Swift SVN r8275
2013-09-16 15:25:48 +00:00
Chris Lattner
ee1a9141a3 move the capture list up to AbstractFunctionDecl, and compute it
for all AbstractFunctionDecl's.  Refactor ASTDump of AbstractFunctionDecl's
to all go through the same funnel point and print it in the right place.


Swift SVN r8242
2013-09-14 04:25:43 +00:00
Dmitri Hrybenko
536ed954ad Remove FuncExpr. Add CaptureInfo to FuncDecl. Introduce AnyFunctionRef.
AnyFunctionRef is a universal function reference that can wrap all AST nodes
that represent functions and exposes a common interface to them.  Use it in two
places in SIL where CapturingExpr was used previously.

AnyFunctionRef allows further simplifications in other places, but these will
be done separately.


Swift SVN r8239
2013-09-14 02:15:48 +00:00
Dmitri Hrybenko
c4f8e59ca4 Cleanup comments on UnqualifiedLookup (FuncExpr is going away)
Swift SVN r8238
2013-09-14 01:54:12 +00:00
Dmitri Hrybenko
5ac875e5dc Add CaptureInfo class that manages capture lists
Swift SVN r8234
2013-09-14 00:22:44 +00:00
Anna Zaks
6775516a7c [SIL] Propagate [transparent] from decl to apply inst for constructor.
Swift SVN r8225
2013-09-13 23:21:40 +00:00
Anna Zaks
d5f826530b [SIL] Ensure we mark default argument generators as transparent.
We want the argument generator functions to be treated as transparent iff the "parent" function is transparent. There is no need to special case it in isTransparent because the SILDeclRef contains the :parent" Decl, and the first check will just work for us automatically.

Do make sure that the isTransparent is consulted when the apply instruction is created.

Swift SVN r8224
2013-09-13 23:21:39 +00:00
Anna Zaks
529b247f44 Allow [transparent] attribute on constructors
Swift SVN r8223
2013-09-13 23:21:36 +00:00
Dmitri Hrybenko
313654d368 Remove an unused header (that has syntax errors)
Swift SVN r8220
2013-09-13 23:12:13 +00:00
Dmitri Hrybenko
fb227e6da6 Remove CapturingExpr::getParamPatterns()
Swift SVN r8218
2013-09-13 22:19:20 +00:00
Manman Ren
fa0acc9328 SIL Serialiation: add implementation to deserialize SIL and a wrapper class
SerializedSILLoader to hold a list of SIL deserializers.

Also add an intial implementation of a linking pass that is run right after
SILGen to link the declaration of SILFunction to the actual definition in
the serialized module.

We add two blocks to the serialized module: a sil index block that
maps identifier to a function ID and also holds a list of function offsets,
and a sil block for the actual SILFunctions. We can probably use subblock
instead of two top-level blocks.

The serialization/de-serialization of the function hash table and the function
offsets are implemented. But we are missing handling of types (see FIXME in
the code).

ModuleFile::Serialized is made public to be used by SIL deserializer, as well
as ModuleFile::getType.

The SIL deserializer holds a pointer to the ModuleFile, it gets the sil cursor
and the sil index cursor from the ModuleFile. The other option is for SIL
deserializer to find the start of the two sil blocks within itself, thus having
less coupling with ModuleFile.

No testing case yet because we are missing handling of types.


Swift SVN r8206
2013-09-13 17:44:41 +00:00
Joe Groff
c0317ec696 AST: Add Type::getStructOrBoundGenericStruct helper.
Swift SVN r8204
2013-09-13 17:10:21 +00:00
Doug Gregor
a2df2ca302 Introduce TypeBase::getTypeOfMember() to produce the type of a member access.
This routine provides an AST-level operation that takes a base type
and a member, then computes the type the member will have when
accessed through that base, substituting (e.g.) generic arguments for
the archetypes in the type of the member. It is a cleaned up, slightly
generalized, and slightly more correct formulation of
TypeChecker::substMemberTypeWithBase(), which is now just a shim that
invokes TypeBase::getTypeOfMember().

Addresses <rdar://problem/14778376>.


Swift SVN r8198
2013-09-13 16:07:27 +00:00
Doug Gregor
baf070b654 Zap BoundGenericType::hasSubstitutions() and its only, unnecessary use.
Swift SVN r8195
2013-09-13 14:45:24 +00:00
Doug Gregor
e5c39d3e16 Always compute the substitutions of a BoundGenericType on-the-fly.
We often won't need the complete substitutions, so only compute them
when needed. This also means that we don't need to serialize them into
module files.


Swift SVN r8194
2013-09-13 14:38:23 +00:00