Commit Graph

321 Commits

Author SHA1 Message Date
Dave Zarzycki
89cfcbfbae Misc LangRef updates
1) Document that a series of '.' are operators.
2) '@' was dropped as an operator in r5019.
3) Move some commentary into the main documentation.
4) Better cross-referencing.
5) Tuple dot expressions use integer literals, not $identifiers.

Swift SVN r13694
2014-02-09 04:39:47 +00:00
Dave Abrahams
6f03d836eb [stdlib] Half-open ranges are now spelled x...y
Fully-closed ranges are coming soon.  See the release notes for details.
Implements the "hard" part of <rdar://problem/14586400>

Swift SVN r13674
2014-02-08 05:37:57 +00:00
Dave Zarzycki
1e3fd1a5b1 Parser: allow '...' to be an operator for ranges
<rdar://problem/16018151> Allow me to declare an operator spelled "..."

Swift SVN r13670
2014-02-08 02:10:37 +00:00
Chris Lattner
827acad533 Various inout improvements:
- purge @inout from comments in the compiler except for places talking about
   the SIL argument convention.
 - change diagnostics to not refer to @inout
 - Change the astprinter to print InoutType without the @, so it doesn't show
   up in diagnostics or in closure argument types in code completion.
 - Implement type parsing support for the new inout syntax (before we just 
   handled patterns).
 - Switch the last couple of uses in the stdlib (in types) to inout.
 - Various testcase updates (more to come).



Swift SVN r13564
2014-02-06 06:22:27 +00:00
Doug Gregor
1f7292645e Introduce a short section describing Swift's contextual keywords.
Swift SVN r12047
2014-01-08 05:00:28 +00:00
Doug Gregor
14bf9ff89f Update LangRef for the "static" -> "type" change.
Swift SVN r12045
2014-01-08 05:00:20 +00:00
Dave Abrahams
ddab785fcf Replace stray "Enumerable"s with "Sequence"
There were a lot of instances of "Enumerable" that really should have
been changed already.  Along the way, I also

* Moved the adaptor that allows a Stream to be used as a Sequence into
  CompilerProtocols.swift; it's just an affordance to work around
  temporary inability to express the Stream protocol properly

* Made a trivial simplification in Algorithm.swift

Swift SVN r11946
2014-01-06 20:07:02 +00:00
Doug Gregor
fc00bf6076 Parsing and semantic analysis for delegating initializers.
Swift SVN r11921
2014-01-06 16:33:08 +00:00
Joe Groff
017440165e Fix the weird capitalization of MetaTypeType.
Swift SVN r11475
2013-12-19 18:43:08 +00:00
Doug Gregor
ec4913b0ea Implement default definitions for associated types.
Addresses <rdar://problem/14292873>.


Swift SVN r11422
2013-12-18 06:24:53 +00:00
Chris Lattner
b6a648c3ab illustrate how let decls work with classes.
Swift SVN r11201
2013-12-12 19:19:53 +00:00
Chris Lattner
1a3ff1e9b2 implement 'let' pattern bindings.
Swift SVN r11199
2013-12-12 19:16:06 +00:00
Chris Lattner
65aa09d464 implement support for let declarations.
Swift SVN r11195
2013-12-12 18:33:42 +00:00
Chris Lattner
03518d240f revert r11192, I accidentally included too much in the patch.
Swift SVN r11193
2013-12-12 18:24:33 +00:00
Chris Lattner
778225eb96 Implement let declarations.
Swift SVN r11192
2013-12-12 18:22:46 +00:00
Dave Abrahams
7ab9d369aa [stdlib] Rename Char => UnicodeScalar
Swift SVN r10864
2013-12-05 17:30:37 +00:00
Jordan Rose
417b5d3982 Merge TranslationUnit into Module, and eliminate the term "translation unit".
This completes the FileUnit refactoring. A module consists of multiple
FileUnits, which provide decls from various file-like sources. I say
"file-like" because the Builtin module is implemented with a single
BuiltinUnit, and imported Clang modules are just a single FileUnit source
within a module.

Most modules, therefore, contain a single file unit; only the main module
will contain multiple source files (and eventually partial AST files).

The term "translation unit" has been scrubbed from the project. To refer
to the context of declarations outside of any other declarations, use
"top-level" or "module scope". To refer to a .swift file or its DeclContext,
use "source file". To refer to a single unit of compilation, use "module",
since the model is that an entire module will be compiled with a single
driver call. (It will still be possible to compile a single source file
through the direct-to-frontend interface, but only in the context of the
whole module.)

Swift SVN r10837
2013-12-05 01:51:15 +00:00
Dave Zarzycki
942b490342 Copy and paste error: we do not have a ** operator
Swift SVN r10819
2013-12-04 23:46:51 +00:00
Dave Zarzycki
ecb3563628 11242731 simplify precedence of binary operators
Swift SVN r10815
2013-12-04 23:31:16 +00:00
Doug Gregor
4d3e475973 Fix typo in example
Swift SVN r10784
2013-12-04 17:36:25 +00:00
Doug Gregor
627f0ae447 Allow "x as T" to perform implicit conversions from x to T.
Fixes <rdar://problem/15283100>.


Swift SVN r10783
2013-12-04 17:31:44 +00:00
Doug Gregor
002038ad8e Allow a comma-separated list of init expressions in C-style for loops.
Swift SVN r10748
2013-12-03 15:14:54 +00:00
Dave Zarzycki
83f953b80a 15242776 docs: Replace "Slice" with "Array"
Swift SVN r10710
2013-12-01 08:16:54 +00:00
Doug Gregor
19759529db Allow delayed identifier expressions (.foo) with static variables and methods.
This allows expressions such as ".foo" and ".foo(1)" to refer to
static variables and static methods, respectively, as well as enum
cases. 

To get here, rework the parsing of delayed identifier expressions a
bit, so that the argument itself is part of the delayed argument
expression rather than a separate call expression. This simplifies
both the handling of patterns of this form and the type checker, which
can now user simpler constraints.

If we really want to support (.foo)(1), we can make that work, but it
seems unnecessary and perhaps confusing.


Swift SVN r10626
2013-11-21 06:24:06 +00:00
Dmitri Hrybenko
81dc5deee8 Change 'def' keyword back to 'func'
Swift SVN r10522
2013-11-17 07:45:28 +00:00
Doug Gregor
5bdaf96a9b Update grammar for comma-separated increment expressions in C-style for loops.
The actual language change went into r10399.


Swift SVN r10409
2013-11-13 03:54:20 +00:00
Dmitri Hrybenko
91ce21666d Change 'func' keyword to 'def'
I tried hard find all references to 'func' in documentation, comments and
diagnostics, but I am sure that I missed a few.  If you find something, please
let me know.

rdar://15346654


Swift SVN r9886
2013-11-02 01:00:42 +00:00
Mark Lacey
eaa7018ed0 Fixup attribute syntax in LangRef.html.
There are still some [infix_left=] in the text. Based on
r4627 it looks like these can just be deleted, but I haven't
done so at this time.

Swift SVN r9616
2013-10-23 08:12:21 +00:00
Greg Parker
5708b8b6ec Remove mention of Optional.get().
Swift SVN r9605
2013-10-22 23:11:58 +00:00
Dmitri Hrybenko
dd66c7e455 Update LangRef for 'as' syntax change that happened some time ago
Swift SVN r9379
2013-10-15 21:52:34 +00:00
Chris Lattner
9f439292b6 Implement support for type-attributes on the result of a function type or decl.
Also, improve error recovery for new-syntax attributes.

This means that we now compile the testcase into:

t.swift:3:16: error: unknown attribute 'xyz'
var x : () -> @xyz Int
               ^
t.swift:6:16: error: unknown attribute 'xyz'
func foo() -> @xyz Int {
               ^

instead of:

t.swift:4:15: error: expected type for function result
func foo() -> @xyz Int {
              ^
t.swift:4:14: error: consecutive statements on a line must be separated by ';'
func foo() -> @xyz Int {
             ^
             ;
t.swift:4:16: error: unknown attribute 'xyz'
func foo() -> @xyz Int {
               ^
t.swift:7:1: error: expected declaration

^

this is part of rdar://15183765


Swift SVN r9260
2013-10-12 21:27:16 +00:00
Joe Groff
1bdbc97056 Drop the 'x as! T' cast syntax.
Now that we have a solid Optional-based story for dynamic casts, it's no longer needed, and can be expressed as '(x as T)!'. Future refinement of the 'as' syntax will deal with the unfortunate extra parens.

Swift SVN r9181
2013-10-10 23:47:59 +00:00
Chris Lattner
efe1ff3fd4 update example for the "new" syntax.
Swift SVN r9024
2013-10-08 16:59:42 +00:00
Doug Gregor
611a5cce4b Replace the library-defined postfix '!' with an expr-postfix production.
As with the monadic '?', we treat any left-bound '!' as a postfix
operator. Currently, it extracts the value of its optional
subexpression, failing at run-time if the optional is empty.


Swift SVN r8948
2013-10-06 23:09:58 +00:00
Chris Lattner
2f3f76f582 update langref to describe the new attribute syntax. Drop the old syntax, even
though the parser still eats it temporarily.


Swift SVN r8911
2013-10-04 05:17:14 +00:00
John McCall
298577676e Introduce the monadic ? operator.
A ? operator is interpreted as this if it's left-bound,
so ternary operators now have to be spaced on the left.

Swift SVN r8832
2013-10-02 01:27:45 +00:00
Joe Groff
5049dbbc13 Update LangRef for 'x as T'.
Swift SVN r8813
2013-10-01 21:11:40 +00:00
Joe Groff
911929f1dd Parse and type check initializer closures after 'new T[n]' exprs.
Require that either T be default constructible or that the user provide a closure that maps indices to initial values. We don't actually call the closure yet to initialize the array; that's blocked on function abstraction difference <rdar://problem/13251236>.

Swift SVN r8801
2013-10-01 05:12:54 +00:00
Joe Groff
df5f1f51dd Parse attribute list after enum 'case' keyword.
For consistency with our other decl types. There aren't any case-specific attributes yet, but if/when we add them, this is where they'll go.

Swift SVN r8779
2013-09-30 17:13:34 +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
8b1628bad0 Update LangRef for destructor syntax change
Swift SVN r8695
2013-09-26 18:12:07 +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
Joe Groff
b398492e23 LangRef: Elaborate on interaction of closure capture and inout.
Swift SVN r8666
2013-09-25 21:23:40 +00:00
Joe Groff
0621b811ad Describe inout semantics in more detail in LangRef.
Swift SVN r8663
2013-09-25 21:12:11 +00:00
Joe Groff
3d4c1251f1 Rename 'byref' attribute to 'inout'.
Swift SVN r8661
2013-09-25 20:56:52 +00:00
Joe Groff
8d0d6ff1be LangRef: Demonstrate comma-separated case syntax.
The grammar already until-now-incorrectly claimed that 'case A, B' worked, but insert an example now that it actually works.

Swift SVN r8515
2013-09-20 20:44:11 +00:00
Joe Groff
e109124186 Replace 'union' keyword with 'enum'.
This only touches the compiler and tests. Doc updates to follow.

Swift SVN r8478
2013-09-20 01:33:14 +00:00
Chris Lattner
1928361a5a Change the list of usecases for structs.
Swift SVN r8402
2013-09-18 16:12:14 +00:00
Dave Zarzycki
fa8792d8a8 LangRef: Discuss why structs do not support inheritance
Swift SVN r8399
2013-09-18 15:18:48 +00:00
Doug Gregor
a14ddd41ba Minimally update LangRef for "constructor" -> "init" changes.
Swift SVN r8396
2013-09-18 05:49:34 +00:00