Commit Graph

354 Commits

Author SHA1 Message Date
Anna Zaks
320d3300ef [docs] Add noreturn attribute documentation to the LangRef
Swift SVN r6632
2013-07-26 00:32:25 +00:00
John McCall
c34eaf1a24 Fix langref specification of call syntax.
Swift SVN r6601
2013-07-25 17:03:04 +00:00
Joe Groff
1776881f3a LangRef: Update tuple keyword argument syntax.
Swift SVN r6450
2013-07-22 15:39:07 +00:00
Joe Groff
733c2dd6a0 LangRef: Remove outdated section about metatype expressions.
Swift SVN r6428
2013-07-21 18:39:40 +00:00
Joe Groff
751da69c6a LangRef: Remove some stale references to 'following' tokens.
Swift SVN r6416
2013-07-20 17:35:35 +00:00
Joe Groff
02c609854c LangRef: Update keyword list.
Re-alphabetize 'where' among the declaration keywords. Eliminate the now non-user-facing "identifier-like keyword" concept and sort them among the other expression keywords. Add 'in' as a keyword.

Swift SVN r6182
2013-07-11 23:21:28 +00:00
Joe Groff
070ee26c56 Replace 'requires' keyword with 'where'.
Reuse the 'where' keyword to introduce generic requirement clauses, as in 'func foo<T:Enumerator where T.Element == Int>()'.

Swift SVN r6180
2013-07-11 22:20:40 +00:00
Joe Groff
dd1208c62c LangRef: Update 'switch' statement description.
Swift SVN r6159
2013-07-11 18:08:38 +00:00
Joe Groff
b62b376d45 LangRef: Clean up some grammar and phrasing.
Swift SVN r6158
2013-07-11 18:08:36 +00:00
Doug Gregor
61060baf8e Eliminate the type-checking pass that resolves default arguments in tuple types.
Per r6154, this is now dead code. The only places we allow default
arguments will be visited by normal type validation, so there's
nothing specific to do here.


Swift SVN r6157
2013-07-11 18:06:14 +00:00
Doug Gregor
50d6fd0455 Lock down on the use of default values in patterns and types.
Per previous discussions, we only want to allow default values for
uncurried 'func' and 'constructor' parameters, and not for return
types or arbitrary tuple types. Introduce this restriction, fixing
part of <rdar://problem/13372694>. 



Swift SVN r6156
2013-07-11 17:53:05 +00:00
Joe Groff
d5dd3edcff LangRef: Describe the magic default argument behavior of __LINE__ etc.
Swift SVN r6148
2013-07-11 15:30:30 +00:00
Joe Groff
b2d8226039 LangRef: Describe the new pattern forms.
Swift SVN r6147
2013-07-11 04:51:00 +00:00
Joe Groff
deab9bba9d Typo in LangRef anchor link.
Swift SVN r6131
2013-07-10 21:54:34 +00:00
Doug Gregor
63ff23147f Implement another new closure syntax.
In this syntax, the closure signature (when present) is placed within
the braces and the 'in' keyword separates it from the body of the
closure, e.g.,

      magic(42, { (x : Int, y : Int) -> Bool in
        print("Comparing \(x) to \(y).\n")
        return y < x
      })

When types are omitted from the parameter list, one can also drop the
parentheses, e.g.,

      magic(42, { x, y -> Bool in
        print("Comparing \(x) to \(y).\n")
        return y < x
      })

The parsing is inefficient and recovers poorly (in part because 'in'
is a contextual keyword rather than a real keyword), but it should
handle the full grammar. A number of tests, along with the whitepaper
and related rational documents, still need to be updated. Still, this
is the core of <rdar://problem/14004323>.



Swift SVN r6105
2013-07-10 01:15:15 +00:00
Chris Lattner
2fe98e14e7 implement basic __FILE__, __LINE__, and __COLUMN__ magic identifiers.
Swift SVN r5912
2013-06-30 21:19:32 +00:00
Chris Lattner
71be5c9c60 fallthrough is a control flow transfer too.
Swift SVN r5810
2013-06-26 04:37:59 +00:00
Chris Lattner
1259e32913 - Update LangRef to mention stmt-break/continue/fallthrough. Factor the stmt
grammar description in LangRef and the parser to expose a new stmt-control-transfer.
- remove obsolete comment in ParseStmt.cpp talking about stmt-brace.

No behavior change.


Swift SVN r5809
2013-06-26 04:31:28 +00:00
Doug Gregor
85030ae72f Remove a stray selector-args production from the expr-super grammar
Swift SVN r5776
2013-06-24 14:48:38 +00:00
Doug Gregor
fad5c78484 Remove expr-func from the syntax of the language.
FuncExpr still lives on as the implementation mechanism for FuncDecl,
but it's not long for this world.


Swift SVN r5752
2013-06-21 18:54:18 +00:00
Joe Groff
cb2e800612 LangRef: Update stale language about cast operator syntax.
Cast operators no longer have precedence below all operators, but they still end sequence expression parsing because of the type production on their right sides.

Swift SVN r5572
2013-06-11 00:36:44 +00:00
Joe Groff
5358806890 LangRef: Note that '=' expr has void result.
Swift SVN r5559
2013-06-10 16:31:46 +00:00
Joe Groff
44790622c6 LangRef: Update assign/cast operator descriptions.
Describe the new handling of '=' and cast operators as builtin binary operators.

Swift SVN r5558
2013-06-10 16:20:39 +00:00
Joe Groff
3de47b3fec LangRef: Remove outdated lparen/lsquare whitespace sensitivity talk.
Swift SVN r5557
2013-06-10 01:58:05 +00:00
Doug Gregor
c10b1cef65 Allow trailing closures without pipes wherever we don't expect curly braces.
This moves trailing closures from expr-postfix up to the level of
expr, and introduces an intermediate level (expr-basic) for places
that need to parse expressions followed by curly braces, such as
if/while/switch/for. Trailing closures are still restricted to occur
after expr-postfix, although the parser itself parses a slightly more
general and then complains if it got more than an expr-postfix.


Swift SVN r5256
2013-05-21 22:30:25 +00:00
Doug Gregor
4d60bb7173 Implement trailing closure syntax.
Trailing closure syntax allows one to write a closure following any
other postfix expression, which passes the closure to that postfix
expression as an arguments. For example:

        sort(fruits) { |lhs, rhs|
          print("Comparing \(lhs) to \(rhs)\n")
          return lhs > rhs
        }

As a temporary limitation to work around the ambiguity with

  if foo { ... } { ... }

we require trailing closures to have an explicit parameter list, e.g.,

  if foo { || ... } { ... }



Swift SVN r5210
2013-05-17 19:16:18 +00:00
Doug Gregor
2138dc93e1 Update LangRef with a discussion of the Ruby-inspired closures.
Swift SVN r5204
2013-05-17 17:09:02 +00:00
Doug Gregor
6e2a99f189 Remove unnecessary commentary
Swift SVN r5050
2013-05-06 16:28:07 +00:00
Chris Lattner
15f40068d4 remove stmt-brace. If you need something like it for scoping purposes, you can always use "if true {}".
Swift SVN r5034
2013-05-03 05:59:27 +00:00
Doug Gregor
2f3e948ad1 Remove the ".(foo:1 bar:2)" message-send syntax.
Swift SVN r5009
2013-05-01 04:33:59 +00:00
Joe Groff
7ed3285cd4 LangRef: Another small tweak.
The description of identifiers got long enough that it makes sense to break operators out into their own subsection. Also, I snuck '@' into the operator character set.

Swift SVN r5006
2013-05-01 02:47:53 +00:00
Joe Groff
dedbc6d7a6 Update LangRef.
Ternaries are now parsed among sequence expressions, identifiers can use unicode code points, and new now only allocates arrays.

Swift SVN r5003
2013-05-01 00:18:00 +00:00
Dave Zarzycki
106a7f9797 Random doc updates with new keyword ':' syntax
Swift SVN r4580
2013-04-03 00:23:13 +00:00
Chris Lattner
d53efbba38 fix character escape comments.
Swift SVN r4522
2013-03-28 22:03:03 +00:00
Joe Groff
62b03629b9 LangRef: Describe cast expressions.
Swift SVN r4500
2013-03-27 23:29:44 +00:00
Joe Groff
89e1b7e773 Parser: Give IfExpr traditional ternary syntax.
Swift SVN r4489
2013-03-26 01:17:34 +00:00
Joe Groff
3eb2b132eb LangRef: Describe 'if' expressions.
Swift SVN r4409
2013-03-17 18:39:08 +00:00
Joe Groff
08bb23391e LangRef: Describe 'switch'.
Swift SVN r4362
2013-03-12 23:03:34 +00:00
Doug Gregor
4aa6abd9c8 Extend message-send syntax to new expressions and super.constructor expressions.
For example, this allows:
var window = new NSWindow.(initWithContentRect:NSRect(100, 100, 800, 630)
                                     styleMask:Int(NSTitledWindowMask|NSClosableWindowMask|NSResizableWindowMask)
                                       backing:NSBackingStoreType(NSBackingStoreBuffered)
                                         defer:false)


Swift SVN r4315
2013-03-07 04:43:22 +00:00
Doug Gregor
adcd9d91b9 Implement selector argument syntax for method calls.
Introduce a second syntax for method calls that better describes
messages with multiple selector pieces, e.g.,

    undoManager.(registerUndoWithTarget:this
                               selector:"setItemName:"
                                 object:nameSetter)

Note that we're also allowing ':' as a separator for normal keyword
arguments. The intent is to drop the use of '=' for normal keyword
arguments, but that will be a separate change affecting a number of
test cases.



Swift SVN r4313
2013-03-07 02:01:20 +00:00
Dave Zarzycki
68c6d4c6e3 13324820 Change tuple accessor syntax to 'tuple.0'
Swift SVN r4265
2013-03-02 17:51:03 +00:00
Dave Zarzycki
9d777dfad7 Revert \a, \b, \f
This branch should have been committed a long time ago. Sorry.

Swift SVN r4256
2013-03-01 22:36:19 +00:00
Dave Abrahams
52ab572ef5 Fix English grammar
Swift SVN r4241
2013-02-28 22:27:34 +00:00
Joe Groff
c3917ad4ef LangRef: Tweak generics language.
Swift SVN r4055
2013-02-15 20:17:42 +00:00
Joe Groff
df9cf24132 LangRef: Document generic parameter parsing.
Swift SVN r4054
2013-02-15 00:52:16 +00:00
Dave Zarzycki
bf3c98a0e6 Revert \v from r3968
Nobody can find any modern use for \v.

Swift SVN r3990
2013-02-08 18:19:58 +00:00
Dave Zarzycki
a282c35e6a Make floating-point number parsing more strict
The range operators (".." and someday "...") make constructs like .24...42
ambiguous. Therefore, we will enforce that programmers either place digits
on both sides of the decimal place, or use of exponent based notation.

Swift SVN r3989
2013-02-08 15:48:02 +00:00
Dave Zarzycki
9ad1e4c950 C/C++/ObjC Interop: string/char escapes
If we're going to import C/C++/ObjC code, we ought to "just work" with
their escape patterns when reasonable. (No error-prone octal escapes or
trigraph support). Also, update LangRef to document what the escapes do.

This patch DOES fix a bug with lexing operators in the case of (already
warned about) embedded NUL bytes within a source file.

This patch DOES NOT change what we consider to be valid whitespace in
the language.

Swift SVN r3970
2013-02-06 17:51:18 +00:00
Joe Groff
081787c3d5 Lexer: Lex C99-style hexadecimal float literals.
APFloat's parser gives us the parsing for free. Unlike C99 we require at least one digit on both sides of the hexadecimal point in order to allow '0x1.method()' expressions, similar to Dave's proposed change to float lexing. Also, we were requiring a sign after 'e' in the exponent, which is inconsistent with C, C++, and the Java regex we claim to follow, so I made the exponent sign optional.

Swift SVN r3940
2013-02-03 19:06:08 +00:00
Dave Zarzycki
ff8bd176b4 Sort the reserved keyword list
Swift SVN r3894
2013-01-29 21:13:41 +00:00