Commit Graph

4702 Commits

Author SHA1 Message Date
Jordan Rose
83e46296d5 [ClangImporter] Constify uses of clang::Module.
No functionality change.

Swift SVN r17216
2014-05-02 00:55:30 +00:00
Doug Gregor
411dc3bfd6 Mention NSManaged when complaining about stored properties without initial values.
Finishes <rdar://problem/16736676>.


Swift SVN r17210
2014-05-02 00:08:24 +00:00
John McCall
0bc8309ff6 Add a -import-cf-types frontend option to enable
the CF type-import logic.

Swift SVN r17205
2014-05-01 23:29:23 +00:00
Nadav Rotem
1e8124d161 Add -Onone as an alias to -O0.
Swift SVN r17179
2014-05-01 20:46:49 +00:00
Jordan Rose
79dc7a3716 Remove newline between doc comment and the constant it described.
No functionality change.

Swift SVN r17176
2014-05-01 20:40:10 +00:00
Doug Gregor
79c7af43ce Implicitly turn @NSManaged properties into computed properties.
Also diagnose 'let' @NSManaged properties and @NSManaged properties with
initial values.

Swift SVN r17169
2014-05-01 19:59:13 +00:00
Dave Abrahams
8e2e7e9bfc [stdlib] Hide all BuiltinXXXConvertible's
During String API review we decided these weren't for user consumption.

Swift SVN r17167
2014-05-01 19:35:50 +00:00
Doug Gregor
f3977e3f03 Introduce @NSManaged attribute with basic semantic analysis.
We're still missing a number of checks here, as well as the
functionality to turn @NSManaged properties into computed properties.

Swift SVN r17166
2014-05-01 18:55:32 +00:00
Dave Zarzycki
1930222f3b Runtime: Instruments support plan B
Rather than go through reentrant and problematic contortions to make Swift
work with the existing Instruments hooks, they agreed to just patch some
globals that we provide to get their logic to be activated.

Swift SVN r17144
2014-05-01 06:39:45 +00:00
Doug Gregor
667d90c1f4 Start diagnosing scalar-to-tuple conversions that are missing a keyword argument.
Another baby step toward <rdar://problem/14462349>, made even more
tepid by the fact that I've quarantined this behind a new flag,
-strict-keyword-arguments. Enforcing this breaks a lot of code, so I'd
like to bring up the new model on the side (with good diagnostics that
include Fix-Its) before trolling through the entire standard library
and testsuite to fix violations of these new rules.


Swift SVN r17143
2014-05-01 06:15:30 +00:00
Argyrios Kyrtzidis
9418fb9948 [DiagnosticEngine] Mark module import diagnostic errors as 'fatal' errors, and supress subsequent diagnostics
to avoid a cascade of errors that drown out the original failure.

Swift SVN r17141
2014-05-01 05:24:48 +00:00
Dave Zarzycki
5c9e4376b0 Mangler hack feedback: Update minor version for libFunctionNameDemangle
Also drop "RUNTIME" from the header now that it moved.

Swift SVN r17140
2014-05-01 04:47:13 +00:00
Doug Gregor
c9fd60155e Diagnose an extraneous keyword when calling a single-parameter function with no keyword argument.
This is the simplest case to test the infrastructure for
adding/removing/fixing keyword arguments at the call site that don't
line up with the keyword arguments in a declaration. Baby steps toward
<rdar://problem/14462349>.



Swift SVN r17136
2014-05-01 03:47:52 +00:00
Jordan Rose
9c6ddc085f [driver] Add -lldb-repl and -integrated-repl modes.
Since LLDB is taking over as the REPL for Swift, we eventually want "swift"
and "swift -repl" to invoke "lldb --repl" rather than the frontend. However,
we only want to do this if the LLDB that's present is related to the Swift
that's present -- we don't want to invoke some random LLDB on the system
or in some other Xcode installation. Therefore, Swift searches for LLDB--
first next to the driver, then in the usr/bin/ outside of a toolchain--
before choosing to use it.

If the user just passes -repl and an LLDB is not found relative to the
driver, the existing "integrated" REPL will be launched instead.*

If the user passes -lldb-repl and an LLDB is not found relative to the
driver, one from the user's PATH will be chosen (like the linker).

The user can also pass -integrated-repl to get the existing behavior.
"swift -frontend -repl" always uses the integrated REPL.

* Since LLDB's not quite ready to be the REPL yet, "swift -repl" still
invokes the integrated REPL. "swift -repl -experimental-prefer-lldb" tests
the new behavior; this option will become the default (and the flag removed)
in <rdar://problem/16776719>.

<rdar://problem/16776705>

Swift SVN r17134
2014-05-01 02:15:53 +00:00
Michael Gottesman
c9baa6d739 [devirtualization] Extract the method SILModule::lookUpSILFunctionFromVTable from optimizeClassMethodInst. NFC.
Swift SVN r17133
2014-05-01 02:08:57 +00:00
Michael Gottesman
5449d6f673 [devirtualizer] Refactor findFuncInWitnessTable -> SILModule::findFuncInWitnessTable.
Swift SVN r17130
2014-05-01 01:06:06 +00:00
Doug Gregor
9cfb1b5ca4 Keep track of the locations of the element names in a TupleExpr.
As part of this, use tail allocation to reduce the memory footprint of
TupleExprs. Use factory methods to make it easier to construct.

I'll be using this information in a follow-on patch. SourceKit
probably wants it as well.


Swift SVN r17129
2014-05-01 00:16:36 +00:00
Jordan Rose
4d8b4a6930 [ClangImporter] Move the ASTFrontendAction::Execute logic inline in create().
We're going to need the parser again later, and we probably shouldn't be
hoping Clang's -fsyntax-only mode lines up with what we need to do anyway.

Swift SVN r17124
2014-05-01 00:06:19 +00:00
Joe Groff
164870c0c3 SILGen: Reenable partial application of ObjC methods.
Make ObjC method partial applications go through a native-to-foreign thunk so that we properly handle bridging conversions in the resulting function value. Partial applications through dynamic lookup are still broken because they apparently go through a different path.

Swift SVN r17108
2014-04-30 19:57:44 +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
Nadav Rotem
e406e43060 Disable the inlining of non-direct recursions (where A->B->A).
Swift SVN r17101
2014-04-30 18:45:13 +00:00
Joe Pamer
47628dbfb6 A couple more simple tweaks to improve type-check error reporting.
Swift SVN r17099
2014-04-30 17:54:56 +00:00
Doug Gregor
ca62675c64 Rip out the parsing code for default values in patterns.
This code was already unused.


Swift SVN r17091
2014-04-30 13:59:44 +00:00
Doug Gregor
d003b74c85 An argument with a default value has a keyword argument.
Arguments with default values are one of those places where you
really, really want keyword arguments: make that the default.


Swift SVN r17080
2014-04-30 06:51:43 +00:00
Doug Gregor
3d4df3427a Pretty-print DeclNames with no keyword arguments by dropping the parenthsized bit.
Instead of printing "f(_:_:)", just print "f". 


Swift SVN r17078
2014-04-30 06:28:36 +00:00
Mark Lacey
35c3799d2a Handle -target-abi as a frontend option and default it to darwinpcs for arm64/Darwin.
Swift SVN r17077
2014-04-30 06:12:54 +00:00
Doug Gregor
0863b2c6ec Operators may never have keyword arguments.
Swift SVN r17071
2014-04-30 04:35:02 +00:00
Dave Zarzycki
d0e88b4060 Mangler hack for various subsystems feedback
Swift SVN r17069
2014-04-30 04:20:54 +00:00
Dave Zarzycki
5338ad9223 Runtime: add a crude mangler for Interface Builder
Someday we'll have time to disentagle the real mangler from the rest of the compiler. For now, this is a hack.

<rdar://problem/16671220> Add a simple mangler API just for handling "Module.ClassName" and "Module.ProtocolName" cases

Swift SVN r17066
2014-04-30 03:13:23 +00:00
Doug Gregor
72e32c93af Make argument names default to keyword arguments in the cases where Objective-C has names.
Introduce a model where an argument name is a keyword argument if: 

  - It is an argument to an initializer, or
  - It is an argument to a method after the first argument, or
  - It is preceded by a back-tick (`), or
  - Both a keyword argument name and an internal parameter name are
    specified. 

Provide diagnostics Fix-Its to clean up cases where the user is
probably confused, i.e.,

  - "_ x: Int" -> "x: Int" where "x" would not have been a keyword
  argument anyway
  - "x x: Int" -> "`x: Int"

This covers the compiler side of <rdar://problem/16741975> and
<rdar://problem/16742001>.

Update the AST printer to print in this form, never printing just 
a type for a parameter name because we're also going to adopt
<rdar://problem/16737312> and it was easier to move the tests once
rather than twice.

Standard library and test updates coming separately.




Swift SVN r17056
2014-04-30 00:04:04 +00:00
Jordan Rose
8699a3b83f Add -import-underlying-module option.
This option implicitly imports the Clang module with the same name as the
module being built into every source file in the module being built.
This will be used for mixed-source framework targets to give Swift code the
same implicit visibility for Objective-C decls in the same module that it
already has for other Swift decls.

<rdar://problem/16701230>

Swift SVN r17053
2014-04-29 23:13:45 +00:00
Jordan Rose
930d94ef76 Note that @IBOutlet et al only apply to /instance/ members.
This changes diagnostics for @IBOutlet, @IBAction, and @IBInspectable.

Swift SVN r17050
2014-04-29 22:30:39 +00:00
Jordan Rose
9c8b9f7e36 Validate @IBAction method signatures.
// IBAction, OS X:
@IBAction func foo(sender: AnyObjCClassCompatibleType?)

// IBAction, iOS:
@IBAction func foo()
@IBAction func foo(sender: AnyObjCClassCompatibleType?)
@IBAction func foo(sender: AnyObjCClassCompatibleType?, event: UIEvent?)

All argument types may be unchecked-optional or non-optional as well.
This commit doesn't check that the second argument to an iOS action method
is a UIEvent; the user may want to declare it as AnyObject or perhaps some
other protocol, so I just left it unenforced.

I'm also drawing on my knowledge of Cocoa to disallow String as an IBAction
parameter. Array and Dictionary also shouldn't appear here and thus don't
need special-casing even when bridged.

Finishes up <rdar://problem/16281474>

Swift SVN r17049
2014-04-29 22:30:36 +00:00
Joe Groff
71678b4bdf IRGen/Runtime: Expose the 'isBitwiseTakable' bit in the value witness flags.
Set a bit for types that are non-bitwise-takable, and calculate it as part of runtime struct and enum layout. Include 'bitwise takable' as part of the runtime 'is inline' calculation to be consistent with the compile-time policy change in r17008.

Swift SVN r17036
2014-04-29 15:23:14 +00:00
Dmitri Hrybenko
669f633070 Add "single extended grapheme cluster" literals (SEGCL) -- a subset of
double-quoted string literals that contain a single extended grapheme cluster

SEGCL by default infer type String, but you can ask to infer Character
for them.

Single quoted literals continue to infer Character.

Actual extended grapheme cluster segmentation is not implemented yet,
<rdar://problem/16755123> Implement extended grapheme cluster
segmentation in libSwiftBasic

This is part of
<rdar://problem/16363872> Remove single quoted characters

Swift SVN r17034
2014-04-29 14:08:16 +00:00
Greg Parker
cdc3953a55 [runtime] Note that libobjc knows about some of ClassMetadata's fields.
Swift SVN r17026
2014-04-29 07:30:47 +00:00
Chris Lattner
db876399ad create a helper function for creating a TypeExpr from a
specialized declref, factoring some code.  NFC


Swift SVN r17021
2014-04-29 05:33:32 +00:00
Chris Lattner
30915de98f Form TypeExprs for non-specialized unqualified declrefs that refer to types... like "Int".
Building on previous work, this allows us to properly handle things like Int?() and Int[]().

Of course doing this exposed that TypeExpr was not correct in lots of ways, so this also:
 - Revamps TypeExpr processing to carry a decl in the TypeLoc instead of 
   carrying a Type.  This allows us to correctly handle more complex generics case.  
 - Enhances CSGen to properly open generic types so we can infer generic type parameters from
   context.


Swift SVN r17019
2014-04-29 05:25:21 +00:00
Ted Kremenek
64e08a2ec7 Reorder declaration of attributes in serialization order. NFC.
Swift SVN r17014
2014-04-29 05:12:05 +00:00
Doug Gregor
85df2fa0a1 Restrict overloading of properties with nullary functions.
Ties down the semantics a little bit more for sanity's sake; thanks, Chris.


Swift SVN r17012
2014-04-29 04:38:41 +00:00
Joe Groff
caff7b62d9 IRGen: Expose the array value witnesses as builtins.
Add Builtin.destroyArray, .copyArray, .takeArrayFrontToBack, and .takeArrayBackToFront, which perform bulk destroy/copy/take operations using memcpy/memmove, a loop, or a generic value witness.

Swift SVN r17009
2014-04-29 03:46:58 +00:00
Jordan Rose
8f80f43e72 Add -[no-]link-objc-runtime option that controls the linking of arclite.
Currently arclite is never linked into a binary unless you pass the option.
See <rdar://problem/16679045> for more information.

Swift SVN r17003
2014-04-28 23:39:16 +00:00
Jordan Rose
84f4d3b9fa Sink some triple predicates into swiftBasic.
getPlatformNameForTriple isn't currently being used anywhere elsee, but
this seems more consistent.

No functionality change.

Swift SVN r17002
2014-04-28 23:39:15 +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 Pamer
519e0ec82d Tweak the heuristics for mining inactive constraints for possible reasons why a constraint system failed to converge on a solution. (For the time-being, favor conversion and overload constraints over others.)
Swift SVN r16994
2014-04-28 21:05:40 +00:00
Doug Gregor
7c8605e6b5 Diagnose use of _ after ` in a parameter declaration; it makes no sense.
Swift SVN r16992
2014-04-28 19:41:02 +00:00
Doug Gregor
2872287dcd Add support for marking function arguments with the back-tick ("`").
Part of <rdar://problem/16742001>. At the moment, this is just a
parsing thing, because argument names are still API by default
anyway.

Swift SVN r16991
2014-04-28 19:35:57 +00:00
Doug Gregor
ab6b22fc75 When not used for an escaped identifier, back-tick is a token.
First part of <rdar://problem/16742001>.

Swift SVN r16990
2014-04-28 19:35:56 +00:00
Joe Pamer
1beb2db860 Begin QOI work for rdar://problem/16007230 by making it possible to get slightly more precise constraint solver errors when using the detailed-diagnostics flag.
The work has obviously barely begun, but this change may be immediately useful to some people.

Swift SVN r16989
2014-04-28 19:13:08 +00:00
Joe Pamer
4cae5e82e8 Add a "detailed-diagnostics" flag to control emission of more detailed diagnostics for expression type-check failures.
Swift SVN r16988
2014-04-28 19:13:07 +00:00