Commit Graph

123 Commits

Author SHA1 Message Date
Dmitri Hrybenko
26277fc41d Demangler: remove StringRef dependencies in the demangler interface and
PrettyStackTrace dependencies in the implementation


Swift SVN r20248
2014-07-21 12:46:58 +00:00
Dmitri Hrybenko
18c5b7325e Demangler: remove dependency on swift::Optional
Not strictly required, but we are going to make the demangler self-contained
C++11 code for the benefit of users out of the compiler tree.


Swift SVN r20247
2014-07-21 09:23:09 +00:00
Dmitri Hrybenko
96e2e8d50c Demangler: replace llvm::SmallVector with std::vector
Swift SVN r20095
2014-07-17 16:09:42 +00:00
Dmitri Hrybenko
70e0577767 Demangler: replace LLVM reference counting with std::shared_ptr (which is not
actually necessary here, since all tree nodes could be just allocated from a
single pool)

Steps towards rdar://16929868


Swift SVN r20090
2014-07-17 15:35:29 +00:00
Joe Groff
a14a94942d SILGen: Give dynamic thunks a proper mangling.
This lets us make them 'shared' and teach the demangler about them.

Swift SVN r19945
2014-07-14 21:01:45 +00:00
Chris Lattner
8991456ff2 Switch infix/postfix/prefix to be declaration modifiers instead of attributes,
eliminating the @'s from them when used on func's.  This is progress towards
<rdar://problem/17527000> change operator declarations from "operator prefix" to "prefix operator" & make operator a keyword

This also consolidates rejection of custom operator definitions into one
place and makes it consistent, and adds postfix "?" to the list of rejected
operators.

This also changes the demangler to demangle weak/inout/postfix and related things
without the @.



Swift SVN r19929
2014-07-14 15:51:49 +00:00
Chris Lattner
02999cac51 Reinstate the @ on the @objc attribute. This is largely a revert of r19555 with a few tweaks.
Swift SVN r19706
2014-07-08 21:50:34 +00:00
Chris Lattner
67aeb2e7c0 adjust to mainline API change (IntrusiveRefCntPtr::getPtr() renamed to get())
Swift SVN r19605
2014-07-07 14:37:16 +00:00
Chris Lattner
7a56499d61 Start making @objc not start with an @ sign:
- Change the parser to accept "objc" without an @ sign as a contextual
   keyword, including the dance to handle the general parenthesized case.
 - Update all comments to refer to "objc" instead of "@objc".
 - Update all diagnostics accordingly.
 - Update all tests that fail due to the diagnostics change.
 - Switch the stdlib to use the new syntax.

This does not switch all tests to use the new syntax, nor does it warn about
the old syntax yet.  That will be forthcoming.  Also, this needs a bit of 
refactoring, which will be coming up.



Swift SVN r19555
2014-07-04 05:57:57 +00:00
Doug Gregor
12ad12f1b4 Teach the demangler to print implicitly unwrapped optional sugar.
Just a drive-by noticed while doing dictionary type sugar.


Swift SVN r19257
2014-06-26 21:47:44 +00:00
Doug Gregor
6df8f63913 Teach the demangler to print dictionary type sugar
Swift SVN r19256
2014-06-26 21:43:12 +00:00
Doug Gregor
6a47e4de22 Use type-simple to decide whether to parenthesize a type in the demangler.
Swift SVN r19225
2014-06-26 06:30:26 +00:00
Doug Gregor
acadc936b3 Teach the demangler to print array types as [T] rather than T[]
Swift SVN r19196
2014-06-26 00:03:15 +00:00
Enrico Granata
dd8a5a0063 ImplicitlyUnwrappedOptional is an enum, not a struct. Fix the demangling
Swift SVN r19171
2014-06-25 18:07:24 +00:00
Joe Groff
0de9be20c4 Remove dead function.
Swift SVN r17777
2014-05-09 15:26:58 +00:00
Joe Groff
6607f6c235 Demangler: Demangle Unicode symbol names.
Implement the decoding half of RFC 3492 so we can demangle our Punycode-encoded Unicode symbol names.

Swift SVN r17759
2014-05-09 05:00:54 +00:00
Enrico Granata
8d21def542 Change the demangling of _TtSf from Swift.Float32 to Swift.Float; and that of _TtSd from Swift.Float64 to Swift.Double
There has been a shuffling of which are structs and which are typealiases - the demangler should emit the struct names



Swift SVN r17590
2014-05-07 00:17:01 +00:00
Ted Kremenek
050fd53af7 Rename UncheckedOptional to ImplicitlyUnwrappedOptional.
Swift SVN r17232
2014-05-02 06:13:57 +00:00
Doug Gregor
3d3ff6811a Add a pile of missing #includes exposed by pruning includes in top-of-tree LLVM.
Swift SVN r17157
2014-05-01 14:26:34 +00:00
Joe Groff
f7c3331c0e Demangle objc-to-native thunks.
Somehow the demangling for these thunks slipped through the cracks.

Swift SVN r17107
2014-04-30 19:57:42 +00:00
Chris Lattner
a7012f23ef Remove swift::ArrayType. It is dead and vestigial code for supporting fixed size
arrays, which never got baked.  Remove it until we have time to do things right.


Swift SVN r16995
2014-04-28 21:18:27 +00:00
Joe Groff
857da9a4a2 Finish adding demanglings for the array value witnesses.
Swift SVN r16773
2014-04-24 22:32:54 +00:00
Joe Groff
f29a156e83 IRGen/Runtime: Add value witness slots for array witnesses.
Add value witnesses for destroyArray, initializeArrayWithCopy, and initializeArrayWithTake{FrontToBack,BackToFront}, and fill out the runtime value witness table implementations. Stub out the IRGen ones for now.

Swift SVN r16772
2014-04-24 22:25:26 +00:00
John McCall
b38a63950d Implement @unowned(unsafe).
This was part of the original weak design that
there was never any particular reason to rush the
implementation for.  It's convenient to do this now
so that we can use it to implement Unmanaged<T> for
importing CF types.

Swift SVN r16693
2014-04-23 08:51:23 +00:00
John McCall
8681963bcb A couple of long-overdue renames.
Builtin.ObjectPointer -> Builtin.NativeObject
Builtin.ObjCPointer -> Builtin.UnknownObject

Swift SVN r16634
2014-04-22 00:17:08 +00:00
Joe Groff
c73acc67f2 SIL: Add an "UnownedInnerPointer" result convention.
This will represent the return convention of imported __attribute__((objc_returns_inner_pointer)) methods. Leave it unimplemented for now until we can autorelease things sanely.

Swift SVN r16628
2014-04-21 21:57:13 +00:00
Joe Groff
ebe5f4620c Don't include the module in protocol conformance manglings.
The cost of hacks to swift_conformsToProtocol is starting to outweigh any benefit to being principled here. We'll get a linker error now if multiple modules declare a conformance for the same type to the same protocol, but that's arguably a good thing for 1.0 anyway, since we aren't set up to get that right in other ways.

Swift SVN r16554
2014-04-18 23:13:40 +00:00
Joe Groff
85ab7ed9e1 Remove mangling and demangling for block shims.
Swift SVN r16488
2014-04-18 02:36:54 +00:00
John McCall
f1180f5e6d in order to work correctly for non-@objc protocols.
Language features like erasing concrete metatype
values are also left for the future.  Still, baby steps.

The singleton ordinary metatype for existential types
is still potentially useful; we allow it to be written
as P.Protocol.

I've been somewhat cavalier in making code accept
AnyMetatypeType instead of a more specific type, and
it's likely that a number of these places can and
should be more restrictive.
When T is an existential type, parse T.Type as an
ExistentialMetatypeType instead of a MetatypeType.

An existential metatype is the formal type
 \exists t:P . (t.Type)
whereas the ordinary metatype is the formal type
 (\exists t:P . t).Type
which is singleton.  Our inability to express that
difference was leading to an ever-increasing cascade
of hacks where information is shadily passed behind
the scenes in order to make various operations with
static members of protocols work correctly.

This patch takes the first step towards fixing that
by splitting out existential metatypes and giving
them a pointer representation.  Eventually, we will
need them to be able to carry protocol witness tables

Swift SVN r15716
2014-04-01 00:38:28 +00:00
Dmitri Hrybenko
866511e27d Add mangling for SubscriptDecls to allow us to produce USRs for them
<rdar://problem/16237251> USR generator skips SubscriptDecls


Swift SVN r14923
2014-03-11 18:03:04 +00:00
Chris Lattner
11bedff2f3 the swift.Slice type got removed a long time ago, being replaced with
what is now Swift.Array.  Update various internal stuff to refer to
Array instead of Slice.  NFC.


Swift SVN r14567
2014-03-02 06:21:37 +00:00
John McCall
5463c2072b Demangle partial-apply forwarding thunks.
rdar://16167733

Swift SVN r14538
2014-02-28 22:03:49 +00:00
John McCall
227e2d0159 Refactor the demangling of <global> so that it can be used in
recursive positions.

Also change the representation of certain <global>s in the
demangling tree by sinking <directness> down as a child of
the affected node.

Swift SVN r14537
2014-02-28 22:03:46 +00:00
Mark Lacey
3d890ae562 Formatting fix in demangler. NFC.
Swift SVN r14405
2014-02-26 21:13:19 +00:00
Doug Gregor
981f8f6509 Rename "destructor" -> "deinit" (as a keyword) and -> "deinitializer" (in diagnostics).
Swift SVN r14380
2014-02-26 05:51:45 +00:00
Doug Gregor
0bde325327 Collapse 'DynamicSelf' into 'Self'.
Swift SVN r14377
2014-02-26 05:04:05 +00:00
Joe Groff
98d6fecc99 '.metatype' -> '.Type'
Also, reserve 'type' as a keyword for ensuing syntax changes.

Swift SVN r14375
2014-02-26 04:23:21 +00:00
Joe Groff
89807a939e Mangle the protocol constraints on associated types in GenericParamLists.
A short-term fix to <rdar://problem/16079822> that keeps generic overloads from creating symbol collisions without requiring a larger migration of the debugger or other tools.

Swift SVN r14353
2014-02-25 21:56:04 +00:00
Ted Kremenek
ea80d0473d Fix unreachable code warning by tightening code. No functionality change.
Swift SVN r14055
2014-02-18 22:26:58 +00:00
Jordan Rose
0b2541b58f Rename the standard library to "Swift" (instead of "swift")
This is more in line with all other modules currently on our system.
If/when we get our final name for the language, we're at least now set
up to rename the library without /too/ much trouble. (This is mostly just
a lot of searching for "import swift", "swift.", "'swift'", and '"swift"'.
The compiler itself is pretty much just using STDLIB_NAME consistently now,
per r13758.)

<rdar://problem/15972383>

Swift SVN r14001
2014-02-17 19:30:47 +00:00
Joe Groff
1bbbcaaf98 Consider @auto_closure when mangling types.
We allow overloads on foo(() -> T) and foo(@auto_closure () -> T) in Sema, so they need distinct manglings. Fixes <rdar://problem/16045566>.

Swift SVN r13856
2014-02-13 03:02:22 +00:00
Joe Groff
bb42bf6617 Demangle dependent types.
Implement the demangling for generic signatures and their requirements, dependent parameters, and member types, now that we actually use these manglings when naming reabstraction thunks.

Swift SVN r13764
2014-02-10 23:37:15 +00:00
Jordan Rose
0de8d19514 Define globals for the names of the stdlib, ObjectiveC, and Foundation modules.
This is mostly useful for the standard library, whose name is going to
change to "Swift" soon. (See <rdar://problem/15972383>.) But it's good DRY.

Swift SVN r13758
2014-02-10 22:40:42 +00:00
Joe Groff
6c4136103c Demangle: Demangle specializations.
This time, be sure to reset the demangler state after demangling the
specialization header, because it is a prefix of the demangled symbol
name.

Swift SVN r13378
2014-02-03 22:48:07 +00:00
Joe Groff
f782eeac30 Revert "Demangle: Demangle specializations" until I figure out an assertion failure.
Swift SVN r13376
2014-02-03 22:19:03 +00:00
Joe Groff
0837a32675 Demangle: Demangle specializations.
Swift SVN r13368
2014-02-03 21:17:18 +00:00
Doug Gregor
cd02337caf Update Demangler to support DynamicSelf
Swift SVN r13297
2014-02-01 06:52:43 +00:00
Greg Parker
b2846b546b Make Int a word-size type.
- Int and UInt are now struct types backed by Builtin.Word. Previously they
were typealiases for Int64; Int and Int64 are now distinct types.
- Mangled names 'i' and 'u' are now Int and UInt. Int64 is mangled longhand.
- Word is a typealias for Int. It is expected to go away in the future.
- Builtin.Word is unchanged.
- CLong and CUnsignedLong are typealiases for Int and UInt.
- FixedPoint.swift is now FixedPoint32.swift and FixedPoint64.swift. 
Reunifying these requires better builtins, especially for checked 
conversions (rdar://15472770).
- Updated many tests, mostly because Int is no longer spelled Int64 in sil.
- One check was removed from test decl/operator/operators.swift 
because it changed behavior when Int became a non-typealias 
type (rdar://15934688).



Swift SVN r13109
2014-01-29 12:21:19 +00:00
John McCall
af032e9300 Demangle the new protocol witness thunk mangling.
Remove the documentation and demangling for the old one.

rdar://15842093

Swift SVN r13066
2014-01-28 22:19:01 +00:00
Chris Lattner
d407bc8fc4 Teach the parser to add the didSet/willSet functions to the enclosing
type, so we emit them.  Add mangler (and demangler) support for these.
Enhance our testcase to check to make sure that stores within these
specifiers are direct, they don't cause recursive infinite loops.

John, I picked w/W for the mangling letters, let me know if this is ok.


Swift SVN r13050
2014-01-28 05:15:56 +00:00