Commit Graph

1494 Commits

Author SHA1 Message Date
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
Chris Lattner
f248ffb53a Introduce a scope abstraction, the next step to implementing
name lookup.


Swift SVN r65
2010-07-23 04:37:16 +00:00
Chris Lattner
7ff4cc6e21 split the decl processing stuff in Sema out into a new
SemaDecl class where it belongs.  Tidy up headers a bit.


Swift SVN r64
2010-07-23 04:13:53 +00:00
Chris Lattner
8bf327b648 add a new AST/Identifier class which represents a uniqued string.
Add support to ASTContext to unique strings into identifiers.


Swift SVN r62
2010-07-23 03:40:02 +00:00
Chris Lattner
49b3c52843 implement parser support for function types.
Swift SVN r50
2010-07-22 02:11:49 +00:00
Chris Lattner
b1d25371e3 type things as VarDecl instead of as Decl, return things by value from
void parse methods.


Swift SVN r48
2010-07-22 00:47:53 +00:00
Chris Lattner
aa126e87f9 add a new SemaType module, add parser support for tuples.
Add lexer support for ->.  Expand the testcase.


Swift SVN r47
2010-07-21 07:17:43 +00:00
Chris Lattner
2eeee5faca give ASTContext a SourceMgr reference, add diagnostic hooks to SemaBase.
Swift SVN r39
2010-07-19 05:13:55 +00:00
Chris Lattner
c5e54442b4 make the parser actually create VarDecl AST nodes.
Swift SVN r38
2010-07-19 05:08:21 +00:00
Chris Lattner
a63671f116 add binary expression ast node.
Swift SVN r31
2010-07-19 00:57:54 +00:00
Chris Lattner
a39a7ec6a2 make the sema methods be prefixed with ActOn
Swift SVN r29
2010-07-19 00:46:09 +00:00
Chris Lattner
66199fa090 implement a new IntegerLiteral ast node, add plumbing for
allocation of exprs from ASTContext.


Swift SVN r28
2010-07-19 00:42:30 +00:00
Chris Lattner
d6edeb7a8b thread Expr* results through the parser and SemaExpr.
Swift SVN r27
2010-07-19 00:15:02 +00:00
Chris Lattner
910f84b6ae thread astcontext from the driver, down through Sema.
Swift SVN r26
2010-07-19 00:07:47 +00:00
Chris Lattner
d3756f2627 Sketch out the new AST library, lets start with expressions.
Swift SVN r25
2010-07-19 00:05:11 +00:00
Chris Lattner
b45fe8abf5 set up semaexpr and sema base. Give SemaExpr a couple trivial methods.
Swift SVN r24
2010-07-18 23:54:47 +00:00
Chris Lattner
68a2d3a33c stub out the Sema object.
Swift SVN r21
2010-07-18 22:59:13 +00:00