Commit Graph

21693 Commits

Author SHA1 Message Date
Argyrios Kyrtzidis
6942646f80 [AST] Make 'self' vars implicit and provide a source location for them.
Verifier expects all decls to have locations, let's keep it happy.

Swift SVN r8757
2013-09-29 00:12:13 +00:00
Argyrios Kyrtzidis
4a91e28d11 [AST] For the ASTWalker add Module and Decl as a parent kind, and make ParentTy a class.
Swift SVN r8756
2013-09-29 00:12:11 +00:00
Dmitri Hrybenko
52555294f9 Type printer: replace a broken variant of GenericParamList printer with a use of AST printer
Swift SVN r8751
2013-09-28 02:45:44 +00:00
Dmitri Hrybenko
38994060d5 AST printing: merge swift::Type::PrintOptions into swift::PrintOptions
There is no reason to have two different options structs.


Swift SVN r8749
2013-09-28 02:19:31 +00:00
Joe Groff
82a18333ed SIL: Purge SpecializeInst.
Make ApplyInst and PartialApplyInst directly take substitutions for generic functions instead of trying to stage out substitutions separately. The legacy reasons for doing this are gone.

Swift SVN r8747
2013-09-28 00:15:45 +00:00
Dmitri Hrybenko
09f44aec2b Move ValueDecl::getDefaultArg() -> AbstractFunctionDecl::getDefaultArg()
Swift SVN r8744
2013-09-27 22:27:12 +00:00
Anna Zaks
3e5c1f81d2 Support transparent attributes on struct and enum extensions.
Attribute [transparent] on extensions should apply to all members(functions, properties) of that extension.

Addresses radar://15035271.

Swift SVN r8735
2013-09-27 20:29:31 +00:00
Anna Zaks
f0dda149ab Move attributes from ValueDecl to Decl.
Swift SVN r8734
2013-09-27 20:29:29 +00:00
Argyrios Kyrtzidis
f32167d166 [AST] Introduce a walk() method for TranslationUnit.
Swift SVN r8729
2013-09-27 17:24:35 +00:00
Doug Gregor
7de90d7822 Make Decl::dump() not print before it dumps.
Swift SVN r8726
2013-09-27 15:09:23 +00:00
Doug Gregor
0d33ff3f40 Teach SILGen to directly emit optional injection operations for dynamic lookup.
... rather than synthesizing expressions in the AST.


Swift SVN r8723
2013-09-27 14:12:33 +00:00
Dmitri Hrybenko
b33caadd89 AST printer: print raw type of EnumDecl
Swift SVN r8716
2013-09-27 01:52:07 +00:00
Adrian Prantl
555b18228a make assertions more verbose
Swift SVN r8714
2013-09-27 00:32:28 +00:00
Adrian Prantl
355ee1e016 Make the demangler less prone to crash on invalid input in release builds.
Swift SVN r8712
2013-09-27 00:31:19 +00:00
Dmitri Hrybenko
ba2e4732d0 Remove unused member EnumDecl::isEnum
Swift SVN r8710
2013-09-27 00:22:39 +00:00
Dmitri Hrybenko
448d7cff8e AST Printer: add tests for printing deserialized modules
...and fix bugs found by this.


Swift SVN r8706
2013-09-26 23:17:32 +00:00
Dmitri Hrybenko
04d2625807 Record known protocols without calling the type checker
Right now the type checker is responsible for marking known protocols in the
imported AST for 'swift' module.  If we don’t run the type checker, known
protocols are not marked correctly.

This patch moves the code to mark known protocols from libSema to libAST and
calls it when we load the standard library module.

Motivation: Swift tools might want to deserialize a module and inspect the AST
(for example, print it).  There is no need to invoke the type checker in this
case, and we don’t even have a TU.


Swift SVN r8704
2013-09-26 22:27:08 +00:00
Jordan Rose
e05c03d5bc Standardize terminology for "computed", "stored", "variable", and "property".
These are the terms sent out in the proposal last week and described in
StoredAndComputedVariables.rst.

variable
  anything declared with 'var'
member variable
  a variable inside a nominal type (may be an instance variable or not)
property
  another term for "member variable"
computed variable
  a variable with a custom getter or setter
stored variable
  a variable with backing storage; any non-computed variable

These terms pre-exist in SIL and IRGen, so I only attempted to solidify
their definitions. Other than the use of "field" for "tuple element",
none of these should be exposed to users.

field
  a tuple element, or
  the underlying storage for a stored variable in a struct or class
physical
  describes an entity whose value can be accessed directly
logical
  describes an entity whose value must be accessed through some accessor

Swift SVN r8698
2013-09-26 18:50:44 +00:00
Dmitri Hrybenko
5c142346c6 Destructor syntax: require an empty parameter list for destructors
rdar://14968738


Swift SVN r8694
2013-09-26 18:09:12 +00:00
Doug Gregor
cc4c7d0fd8 [Clang importer] Stop creating property/subscript getter/setter thunks.
Instead of synthesizing Swift code for the property and subscript
getters and setters we import from Objective-C, just create the
declarations and mark them as being Objective-C (foreign) entry
points. This means that we'll use the Objective-C entry points (via
objc_msgSend).


Swift SVN r8692
2013-09-26 15:58:19 +00:00
Argyrios Kyrtzidis
4255aa64c9 [ASTWalker] When walking a SelfApplyExpr, walk the base expression first to get a source-order walk.
Swift SVN r8679
2013-09-25 23:55:47 +00:00
Dmitri Hrybenko
5268940301 AST Printer: simplify the check for DynamicLookup known protocol
Swift SVN r8677
2013-09-25 23:41:33 +00:00
Dmitri Hrybenko
f46dd5e91c AST Verifier: remove a redundant check (now we verify all Patterns)
Swift SVN r8676
2013-09-25 23:41:08 +00:00
Anna Zaks
c2adc1e35b Restructure parsing to ensure that bodiless constructors/destructors/subscripts are fully diagnosed.
Previously, we followed an early exit for bodiless constructors/destructors/subscripts.
This prevented some diagnostics and full AST class setup in SIL parsing mode and for bodiless subscripts in general.

Thanks for the suggestion Dmitry!

Swift SVN r8672
2013-09-25 23:28:52 +00:00
Joe Groff
3d4c1251f1 Rename 'byref' attribute to 'inout'.
Swift SVN r8661
2013-09-25 20:56:52 +00:00
Dmitri Hrybenko
f10947654e AST Verifier: verify source locations on Patterns and fix bugs found by this
Swift SVN r8660
2013-09-25 20:53:28 +00:00
Jordan Rose
b11fb61b11 Resolve protocols in extensions whenever the base type is accessed.
This is necessary for checking protocol conformance out of order.

Swift SVN r8651
2013-09-25 20:08:27 +00:00
Jordan Rose
15e981964d Define implicit struct constructors on demand and not lazily.
We now do this at lookup, and don't wait to define default constructors.
There's no benefit to waiting.

Swift SVN r8648
2013-09-25 20:08:25 +00:00
Jordan Rose
15bfc8db2b Don't type-check imported decls unless referenced in the source file.
Instead, pass a LazyResolver down through name lookup, and type-check
things on demand. Most of the churn here is simply passing that extra
LazyResolver parameter through.

This doesn't actually work yet; the later commits will fix this.

Swift SVN r8643
2013-09-25 20:08:14 +00:00
Jordan Rose
6e1ed42c07 s/swift::lookupVisibleDecls/swift::lookupVisibleMemberDecls/g
There were two overloads of lookupVisibleDecls: one that performed
unqualified lookup from a particular decl context, the other performing
qualified lookup into a given type from a particular decl context.
They don't really behave the same, so let's give them different names.

Swift SVN r8641
2013-09-25 20:08:09 +00:00
Anna Zaks
970bcd3bc6 fixup for r8625
Fix a copy and paste error + a better comment.
Thanks Dmitry.

Swift SVN r8631
2013-09-25 17:56:23 +00:00
Anna Zaks
30039a59f1 Emit Swift declarations when printing SIL.
Only print function member declarations and skip the bodies since the bodies are already represented in SIL and ASTPrinter is not good enough to print arbitrary expressions.

In order to have valid output, make sure that ASTPrinter does not print references to DynamicLookup protocol.

Swift SVN r8627
2013-09-25 17:08:42 +00:00
John McCall
9acad47cfd Add a convenient API for applying type arguments to a
polymorphic function type.

Swift SVN r8623
2013-09-25 06:40:43 +00:00
Dmitri Hrybenko
33aada4b16 Set DeclContext for argument parameter patterns
Fixes a crash in Serializer, when processing a function with a selector-style signature.

Also added an AST verifier check that all Decls have a non-null DeclContext.


Swift SVN r8621
2013-09-25 01:47:27 +00:00
Dmitri Hrybenko
725b0e01eb AST Printer: fix printing of same type requirement in generic parameter lists
These types are really the same for the type checker, so they are printed in
exactly the same way.  To recover the original spelling, prefer to print
a TypeRepr, if available.


Swift SVN r8603
2013-09-24 21:16:35 +00:00
Argyrios Kyrtzidis
614a427a22 [ASTDumper] Print out whether an expression node is implicit.
Swift SVN r8602
2013-09-24 21:01:08 +00:00
Argyrios Kyrtzidis
e224667315 Refactor Implicit'ness of expressions.
Introduce a bit in Expr to indicate whether the expression is implicit and decouple the implicitness
of an expression from whether it has a source location or not.

This allows implicit expressions to be able to point at the source location where they originated from.
It also allows decoupling the implicitness of a parent from its children, so for example, an implicit CallExpr
can have an explicit parameter value.

Swift SVN r8600
2013-09-24 20:42:29 +00:00
Dmitri Hrybenko
71dddd1c88 AST Printer: implement requirement printing in a generic parameter list
Swift SVN r8595
2013-09-24 17:55:19 +00:00
Doug Gregor
f67aa78d69 Dynamic lookup for subscripts: semantic analysis and ASTs.
Swift SVN r8591
2013-09-24 05:51:30 +00:00
Doug Gregor
6a1db609e0 Allow [objc] subscripts and emit Objective-C thunks for the getters/setters.
Sema and SILGen; IRGen to follow.


Swift SVN r8589
2013-09-24 02:26:23 +00:00
Dmitri Hrybenko
a044e2a420 AST Printer: don't print properties twice and don't print top-level variables in braces
Swift SVN r8587
2013-09-24 02:05:02 +00:00
Dmitri Hrybenko
dec19cc7c3 AST printing: function parameter printing: simplify code
Swift SVN r8585
2013-09-24 01:27:13 +00:00
Dmitri Hrybenko
10d8fdc64f AST/AbstractFunctionDecl: Remember if a function had a selector-style signature
... and use this information in AST printing


Swift SVN r8583
2013-09-24 00:56:33 +00:00
Dmitri Hrybenko
c9d1aa3f96 AST Printer: fix parameter name printing in setters
Also, add an AST verifier check that the parameter patterns in getters/setters
are sane.


Swift SVN r8574
2013-09-23 22:25:35 +00:00
Joe Groff
ae496fa64c ASTWalker: Walk the pre-type-checked raw literal expr of EnumElements.
As suggested by Dmitri, walk the expr so that clients such as syntax highlighting can see it, but discard the result if it doesn't come back as a LiteralExpr to avoid breaking the invariant.

Swift SVN r8573
2013-09-23 22:19:04 +00:00
Dmitri Hrybenko
ec899dee8c AST Printer: don't print a trailing space after "get:", "set:" labels
Swift SVN r8566
2013-09-23 20:12:04 +00:00
Argyrios Kyrtzidis
d70ac6f78a [AST] Mangler: recover from erroneous extension decl context.
Swift SVN r8564
2013-09-23 19:51:50 +00:00
Dmitri Hrybenko
7dedb7048f AST Verifier: add a check that AssociatedTypeDecl has a protocol DeclContext
Swift SVN r8562
2013-09-23 18:56:55 +00:00
Dmitri Hrybenko
af8fa8c8cd Remove a circular dependency AST<->Sema caused by type printing
AST used to depend on Sema in type printing.  Specifically,
TypeVariableType::printImpl() is inside Sema.

This change moves the type variable identifier from
TypeVariableType::Implementation to TypeVariableType. This enables us to print
type variables in AST library.

Because type variable type is a temporary type for use inside type checker
only, I don't expect that we will modify it to be more verbose to enhance
diagnostics.  This is a job for locator printing.


Swift SVN r8559
2013-09-23 17:40:43 +00:00
Argyrios Kyrtzidis
9e0cfb811d [AST] Allow the mangler to handle declarations with error types in them.
This is only useful for unique-identification uses of the mangler, like in SourceKit,
which has to deal with invalid code.
Since this is not related to ABI, we can change the encoding anytime we want.

Swift SVN r8557
2013-09-23 16:11:26 +00:00