Jordan Rose
71a2adbdde
Check default arguments even if a function has no body ( #18864 )
...
This is needed for textual interfaces, but the behavior doesn't
have to be specific to that, since functions without bodies don't
come up in other situations.
2018-08-21 10:41:24 -07:00
Jordan Rose
7046980f99
[ModuleInterface] Print normally unprinted attributes
...
We need @_transparent to control mandatory inlining; @_fixed_layout to
control, well, layout; and @_effects to help optimization. We still
don't need the ImplicitlyUnwrappedOptional attribute, and we don't
need access control attributes (because we handle that uniformly).
This also fixes up the printing of the '_effects' attribute to include
its underscore, so that it matches the source spelling.
2018-08-20 18:30:01 -07:00
Jordan Rose
ad4d72568a
[AST] Print "__owned" and "__shared" with leading underscores
...
The type printer was being optimistic about these, but that's a
problem for testing textual interfaces right now.
2018-08-20 18:30:00 -07:00
Jordan Rose
a17dbfbf29
Merge pull request #18778 from jrose-apple/towards-stability
...
[ModuleInterface] More changes to printing and parsing .swiftinterface files
2018-08-17 09:10:57 -07:00
Jordan Rose
dd8b37ee9f
Merge pull request #18772 from jrose-apple/access-denied
...
Stop printing access on extensions and protocol requirements
2018-08-16 18:24:58 -07:00
Jordan Rose
c62fcad553
Don't synthesize initializers in swiftinterface files
...
...and then don't complain about a class not having any initializers.
2018-08-16 17:59:24 -07:00
Jordan Rose
0ca78265ef
[ModuleInterface] Allow global/static variables without initial values
2018-08-16 17:59:24 -07:00
Jordan Rose
f061dff9b7
[ModuleInterface] Don't print typealiases that match generic params
...
These are synthesized to satisfy associated type requirements, but
they're not needed in source, and they look like self-referential
definitions (`typealias X = X`).
2018-08-16 17:59:24 -07:00
Jordan Rose
6526f11400
[ModuleInterface] Don't print access on extensions
...
This ends up meaning "don't print access attributes, then print access
uniformly on ValueDecls if you're not printing access attributes".
2018-08-16 16:00:42 -07:00
Jordan Rose
1a3cb5b630
[ModuleInterface] "Smoke test" struct and enum declarations too
...
This is not an exhaustive test of language features, but it at
least checks that the simple stuff is working.
2018-08-16 15:52:18 -07:00
Jordan Rose
e2a245d211
[SILGen] Also handle initializers without bodies
...
I was surprised to see this parses fine already, but SILGen still
needs a new check.
2018-08-16 15:52:18 -07:00
Jordan Rose
ec0719d3e0
Handle parsing deinitializers without bodies for .swiftinterfaces
...
The presence of a deinitializer will eventually indicate whether a
class's deinitializer is non-trivial for non-resilient modules.
Also improve recovery for normal source files for various bad ways
of declaring a deinitializer.
2018-08-16 15:48:13 -07:00
Jordan Rose
318e988ae1
[Parse] Allow parsing accessors without bodies for .swiftinterfaces
...
We're going to do need to do more here for inlinable accessors, which
/do/ have bodies, but this helps us get to a bare minimum testing
configuration.
2018-08-16 13:57:45 -07:00
Jordan Rose
d9e47650d5
Add a new SourceFileKind and InputFileKind for textual interfaces
...
And test this by tweaking the rules to allow functions without
definitions, like SIL files.
2018-08-07 08:55:07 -07:00
Jordan Rose
59940b7f04
[ModuleInterface] Filter using access control and @usableFromInline ( #18521 )
...
These are the parts of a (resilient) module that affect the public
interface and ABI; everything else is uninteresting. Or at least ought
to be.
2018-08-06 19:40:44 -07:00
Jordan Rose
e8e0584785
Hook up -emit-interface-path to a simple AST printer
...
We'll want more complexity soon, but this is a start.
2018-08-01 14:34:29 -07:00