Chris Lattner
5a74864a71
Add a scoped hash table for type names to SemaDecl, make Scope push it along with the value scoped hash table.
...
Nothing is added to the type symtab yet though.
Swift SVN r232
2011-02-22 06:45:30 +00:00
Chris Lattner
6a1416b3b8
Revert my last patch. Instead of having a TypeScope and ValueScope, we'll just make Scope do both!
...
Swift SVN r231
2011-02-22 06:36:52 +00:00
Chris Lattner
e6f00fe1cc
Rename the Scope class to ValueScope
...
Swift SVN r230
2011-02-22 06:30:18 +00:00
Chris Lattner
cb9b1838a6
Introduce and create a new TypeAliasDecl for typealiases.
...
Swift SVN r227
2011-02-22 05:47:08 +00:00
Chris Lattner
1a97122ba0
Update to build with mainline LLVM.
...
Swift SVN r225
2011-02-04 06:24:41 +00:00
Chris Lattner
e488b69182
Implement sema support for TupleExprs with default elements (represented with null), implement support for conversions from scalar to tuples with multiple default elements.
...
Swift SVN r220
2010-11-25 23:02:23 +00:00
Chris Lattner
8234b6fd66
Add some sema for tuple elements which are specified with a default value. Still not used for conversions yet.
...
Swift SVN r219
2010-11-25 21:18:48 +00:00
Chris Lattner
28789d43d2
Resolve a fixme: use foo.$1 instead of foo.field1
...
Swift SVN r216
2010-11-11 23:04:29 +00:00
Chris Lattner
3bd8a85784
Fix weirdness in the lang spec by making $123 be a special type of implementation identifier token, handling it uniformly in the grammar in the few places that it is valid.
...
Swift SVN r215
2010-11-11 22:27:39 +00:00
Chris Lattner
906ba908fd
Rename 'data' to 'oneof', resolving a fixme in the spec. Yay for CLU!
...
Swift SVN r212
2010-11-11 01:20:36 +00:00
Chris Lattner
6f8dd4cf32
add parser support for array indexes
...
Swift SVN r209
2010-10-17 14:15:33 +00:00
Chris Lattner
fd54c7f5a0
add parser support for array types, no sema or ast yet.
...
Swift SVN r205
2010-10-15 11:54:34 +00:00
Chris Lattner
272cbcaba3
Implement parser, ast and minimal sema support for :foo expressions, type resolution isn't done yet.
...
Swift SVN r185
2010-10-10 00:15:46 +00:00
Chris Lattner
43f2d1dfa5
wire up parser and basic sema support for scoped identifier expressions (X::Y).
...
Swift SVN r180
2010-10-09 23:01:17 +00:00
Chris Lattner
09a023c3cd
Now that we have simple user defined data types, remove the __builtin_else_hack type. woot.
...
Swift SVN r179
2010-10-09 22:06:13 +00:00
Chris Lattner
ac855b690b
Move ActOnTypeAlias to SemaDecl since a type alias *is* a decl that *installs* a type. Add some fixme's and rename some junk in ASTContext relating to the typemap. Diagnose redefinitions of named types. Install a typemap entry when a data declaration is defined.
...
We can now declare variables to be of data type.
Swift SVN r178
2010-10-09 22:01:25 +00:00
Chris Lattner
57c697172a
Split NamedDecl into NamedDecl with a ValueDecl subclass that has the type and value of the decl.
...
Swift SVN r173
2010-10-09 20:28:11 +00:00
Chris Lattner
3ea5878390
add scafolding for sema of datas.
...
Swift SVN r172
2010-10-09 19:33:50 +00:00
Chris Lattner
19e5390b78
twinify more diagnostics.
...
Swift SVN r168
2010-10-09 17:50:40 +00:00
Chris Lattner
1bef5bd648
Bertrand prefers $0 to _1 for anonymous closure arguments.
...
Swift SVN r165
2010-09-18 16:57:10 +00:00
Chris Lattner
29503975d2
Enhance juxtaposition binding handling to handle binary operators and functions in a more fine-grained way, allowing if/else to work without braces.
...
Swift SVN r163
2010-09-04 19:25:56 +00:00
Chris Lattner
d2abfde434
introduce a new builtin type to represent the result of the else binary operator (which is a temporary hack until we get user defined types).
...
Use it to define ife/else. Fix some precedence/parsing bugs that implementing else exposed.
Swift SVN r162
2010-08-08 22:37:56 +00:00
Chris Lattner
b927b55863
Finally get around to allowing *use* of a named incoming function argument. The first step is to set up a scope for them and walk the argument names, keeping track of access path info.
...
Swift SVN r158
2010-08-07 20:10:19 +00:00
Chris Lattner
025143611f
implement support for tuple expressions with names specified for the elements.
...
Swift SVN r157
2010-08-07 06:51:12 +00:00
Chris Lattner
429ecb81da
Finish ast and sema support for name binding elements of tuples in var decls.
...
Swift SVN r152
2010-08-05 22:22:22 +00:00
Chris Lattner
e1e335610f
int is no longer a keyword, it is a type alias for the new __builtin_int32_type type.
...
Swift SVN r146
2010-08-04 05:27:45 +00:00
Chris Lattner
a8916a6106
implement semantic analysis and AST representation for AliasType (aka typedefs in C).
...
Swift SVN r144
2010-08-04 05:14:57 +00:00
Chris Lattner
f704c58c42
Two significant changes:
...
1. Change the representation of TupleType to contain TupleTypeElt structs instead of PointerUnion<Type*, NameDecl*>
2. Change type canonicalization to not strip field names off tuples, and change type conversion logic to use canonical types again.
Also adds some stuff to the todo list, destined to never be short.
Swift SVN r141
2010-08-04 03:35:53 +00:00
Chris Lattner
807a82cd3d
Resolve a fixme involving precedence of juxtaposition.
...
Swift SVN r140
2010-08-04 00:34:27 +00:00
Chris Lattner
04f7a08621
add support for tuple field access with ".", e.g.:
...
var a : (int, var f : int, int);
var b = a.field0+a.field1+a.f;
This also eliminates TupleConvertExpr.
Swift SVN r137
2010-08-03 06:55:08 +00:00
Chris Lattner
c2fdbb65c6
Tuple types with a single element are now valid. var x : (((int))); is now a triply nested tuple. To make this work, values are allowed to convert to tuples with one element.
...
Swift SVN r130
2010-08-01 07:02:05 +00:00
Chris Lattner
9b30ba0b2c
refactor function body parsing+sema a bit.
...
Swift SVN r126
2010-08-01 04:55:49 +00:00
Chris Lattner
483b8a242d
Enhance HandleConversionToType to take a conversion reason and to produce diagnostics itself instead of relying on clients to do it.
...
Swift SVN r118
2010-07-30 20:04:57 +00:00
Chris Lattner
b3c9942644
Rework handling of sequence expressions and juxtaposition to eagerly bind arguments to functions. This means that in situations like:
...
foo (_0) bar (_0)
that _0 will be bound properly and individually to foo and bar when they are functions, but if they aren't, then this is just one big 4-element sequence.
Swift SVN r115
2010-07-30 17:53:43 +00:00
Chris Lattner
ba04392294
Tighten up sema of anon closure arguments to reject invalid code like this:
...
func funcdecl6(a : int, b : int) -> (int,int) -> int = _0+_1;
var funcdecl7 : (int,int)->(int,int)->int = _0+_1;
It's not valid to bind anon closure arguments to functions, use named arguments instead.
Swift SVN r112
2010-07-28 06:51:12 +00:00
Chris Lattner
667078650a
Implement support for anonymous closure arguments. For example, we can now compile this:
...
var func6 : ((int,int) -> int) -> (); // Takes a function, returns nothing.
func funcdecl5() {
func6(_0 + _1); // Closure with two named anonymous arguments
}
into:
(apply_expr type='()'
(declref_expr type='(int, int) -> int -> ()' decl=func6)
(closure_expr type='(int, int) -> int'
(anondecl '_0' type='int')
(anondecl '_1' type='int')
(tuple_expr type='int'
(binary_expr '+' type='int'
(declref_expr type='int' decl=_0)
(declref_expr type='int' decl=_1))))))))
However, there are still some problems with this (and we're definitely not doing type inference yet, all anon args are assumed 'int').
Swift SVN r111
2010-07-28 06:25:16 +00:00
Chris Lattner
874421d4ce
Implement AST and Sema support for auto-closures. We now parse:
...
var closure1 : () -> int = 4; // Function producing 4 whenever it is called.
var closure2 : (int,int) -> int = 4; // Has some (dead) arguments.
into:
(vardecl 'closure1' type='() -> int'
(closure_expr type='() -> int'
(integer_literal type='int' value=4)))
(vardecl 'closure2' type='(int, int) -> int'
(closure_expr type='(int, int) -> int'
(integer_literal type='int' value=4)))
Swift SVN r101
2010-07-27 06:27:02 +00:00
Chris Lattner
fef3e71b42
stub out parsing of func declarations.
...
Swift SVN r95
2010-07-27 05:32:16 +00:00
Chris Lattner
7e0123c768
Kill off add/sub/mul/div as special AST nodes. Instead, + is just yet-another identifier token and BinaryExpr is a generalized infix call expression.
...
Swift SVN r88
2010-07-25 19:16:45 +00:00
Chris Lattner
cd99eee0c6
Add parser support and stub out a SemaExpr callback for sequence exprs, the foundation of function calls.
...
Swift SVN r83
2010-07-24 22:07:23 +00:00
Chris Lattner
9b42d1b273
enhance parenexpr to be tupleexpr. The grouping paren case is just a special case of a tuple literal with one child.
...
Swift SVN r81
2010-07-24 21:24:44 +00:00
Chris Lattner
94110869e0
add support for parsing attribute lists, and add the first attribute, infix=42. It is now parsed and slammed into the AST, but not used.
...
Swift SVN r79
2010-07-24 20:44:56 +00:00
Chris Lattner
2bafb0e8fb
Introduce new NamedDecl and FuncDecl classes. The difference between the two is syntactic sugar, so most clients want NamedDecl. This doesn't implement FuncDecl yet, which isn't a high prio for me in the short term.
...
Swift SVN r77
2010-07-24 19:09:09 +00:00
Chris Lattner
9a0d6c735a
change the handling of nullable so that hte parser actually checks for the error and only invokes sema if the inputs are valid, tidying up some code.
...
Swift SVN r76
2010-07-24 18:52:46 +00:00
Chris Lattner
315107d5c6
Use the new NullablePtr<> class to allow better error recovery when parsing invalid expressions.
...
Swift SVN r74
2010-07-24 18:48:37 +00:00
Chris Lattner
05730aaef0
Properly treat tuples types with one element as grouping parens. Teach ActOnParenExpr to do the right type propagation.
...
Swift SVN r72
2010-07-24 09:34:38 +00:00
Chris Lattner
06faa365a7
Implement sema support for shadowed declarations.
...
Swift SVN r71
2010-07-24 06:46:48 +00:00
Chris Lattner
1103ff5227
Implement basic parser support for brace expressions.
...
Swift SVN r69
2010-07-23 18:33:49 +00:00
Chris Lattner
58185415a1
now that we have name lookup, we can implement references to
...
other values. crazzay.
Swift SVN r67
2010-07-23 05:48:20 +00:00
Chris Lattner
82ea1aefd6
eliminate unneeded complexity.
...
Swift SVN r66
2010-07-23 04:38:44 +00:00