Commit Graph

20 Commits

Author SHA1 Message Date
Chris Lattner
b503206bec SIL Parsing: add plumbing to know when we're parsing a .sil file
Enhance the lexer to lex "sil" as a keyword in sil mode.


Swift SVN r4970
2013-04-29 05:42:59 +00:00
Dave Abrahams
fd71cbee6b Improve "bad module name" diagnostic
Swift SVN r4737
2013-04-15 22:11:13 +00:00
Chris Lattner
db522fe7db thoroughly rework how the REPL synthesizes code to print values. This centralizes the
logic in Sema (previously, some of it was in tools/Swift/Frontend.cpp) and eliminates
redundancy between expr and pattern printing.  This also eliminates most of the invalid
ASTs that the repl was producing (there is still one left).

This commit reenables the disabled REPL testcase from my last big change.



Swift SVN r4622
2013-04-06 20:05:46 +00:00
Chris Lattner
b4fd6dd04a Change TopLevelCodeDecl to allow it to hold a sequence of different exprs and statements in one unit, wrapping them into a BraceStmt. This makes it more similar to other decls (e.g. funcdecl, ctor decls, etc) and will be useful for future sil work.
Unfortunately, this regresses the repl when expressions like (1,2) are entered. This is because the repl is violating some invariants (forming dags out of ASTs, making ASDAG's which upset the type checker).  I'm going to fix this next, but can't bring myself to do it in the same commit.



Swift SVN r4617
2013-04-05 22:33:14 +00:00
Dave Zarzycki
47cf1848f2 Feedback from Chris: use LLVM ADTs
Swift SVN r4575
2013-04-02 21:27:01 +00:00
Dave Zarzycki
90f8078ce2 Compile multiple files as one translation unit
1) This now works: swift -o foo.o *.swift
2) Errors/warnings are now correct: ".../OutputStream.swift:331:10:"

NOTES:
1) The name of the module is now inferred from -o when available.
2) I had to workaround a unexpected IRGen crash with '&&' in Slice.swift. Weird.
3) "Assemble" is now the default, not "GenerateLL".
4) 'import swift' still requires the 'cat *.swift > swift.swift' hack.

NEXT STEP:
Make 'clang -o foo *.swift' and 'clang -o foo.dylib *.swift' just work.

Swift SVN r4572
2013-04-02 08:10:59 +00:00
Joe Groff
5f1344ce68 REPL: Don't keep stale ASTs if typechecking fails.
Oops, appendToREPLTranslationUnit's "CurTUElem" wasn't intended to leak into the REPLContext.

Swift SVN r4205
2013-02-26 00:57:40 +00:00
Joe Groff
321af9f090 Some frontend cleanup.
Package up some useful REPL context into a header-able REPLContext class. Move the response metavar index there instead of having it as a gross mutable static variable.

Swift SVN r4203
2013-02-26 00:05:00 +00:00
Joe Groff
687c61ad1b REPL: Bind top-level expressions to result vars.
If a REPL input parses to an expression, bind it to the next available variable 'r<n>', and print the result as if it were a name binding. Don't bind a variable if the expression consists of a lone DeclRef, and don't print the binding if it has void type.

Swift SVN r4201
2013-02-25 23:21:34 +00:00
Doug Gregor
bfcd8274fe Every Swift file is a module; let name lookup find the name of the current module.
Swift SVN r3531
2012-12-18 21:41:58 +00:00
Jordan Rose
2dbbb79df4 When parsing in script mode, the file name may not be a valid identifier.
This patch makes it so we substitute 'main' instead of warning. Eventually
we probably want to make this an error in library mode and a pedantic
warning in script mode.

Swift SVN r3516
2012-12-16 22:53:11 +00:00
Doug Gregor
42b1ab6fbd Introduce a LangOptions class to capture various type-checker-tweaking flags. For now, introduce bits to enable the constraint solver and to enable debugging of the constraint solver, and use those to eliminate the "useConstraintSolver" bit that was threaded through too much of the type checker.
Swift SVN r2836
2012-09-12 20:19:33 +00:00
Doug Gregor
81d8f27bde When dumping constraints via TypeChecker::typeCheckExpression(), don't
rely at all on the existing type checker. Instead, just fold sequence
expressions (which are effectively a delayed parsing phase) and then
hand off the expression to the constraint solver.

Allows us to type-check expressions with operators, e.g., f + 1.


Swift SVN r2793
2012-08-27 18:33:20 +00:00
Doug Gregor
0d7afbe5e0 Introduce an almost completely untested implementation of constraint
generation from an expression that has not been type-checked. One can
see the constraints introduced by an expression by using

  :dump_constraints <expression>

within the REPL. We're still missing several major pieces of
constraint generation:
  - We don't yet "open up" references to polymorphic types
  - We don't print out the child constraint systems in the dump, so
  it's not at all obvious what happens within overloading (and I'm not
  convinced I like my representation anyway)
  - There are no tests whatsoever
  - Member constraints are still very, very weird



Swift SVN r2624
2012-08-13 22:59:41 +00:00
Eli Friedman
837fdf04fb Always type-check immediately after a line is finished in the REPL. This isn't quite the same as how script mode works at the moment, but apparently it's way too confusing to delay type-checking errors. <rdar://problem/11296808>
Swift SVN r1572
2012-04-23 23:53:28 +00:00
Eli Friedman
be602fcd05 Get rid of the implicit BraceStmt for the TranslationUnit; instead, have the TranslationUnit directly store a list of decls.
Swift SVN r1521
2012-04-20 00:17:13 +00:00
Eli Friedman
acc17d69aa Initial implementation of the "print" part of the REPL.
Swift SVN r1484
2012-04-19 01:13:37 +00:00
Eli Friedman
cf10f0096e Make the REPL allow mutually recursive functions spread across multiple lines, like we do in script mode.
Swift SVN r1453
2012-04-18 01:20:38 +00:00
Eli Friedman
dc213bca76 Implement basic REPL under swift -repl. Known demo-blockers: need error recovery, need better brace/paren handling, need to implement the "print" part of REPL.
Swift SVN r1452
2012-04-18 00:52:11 +00:00
Eli Friedman
37de44a35d Implement changes to parsing/sema/etc so that we can implement a REPL and the main module parses the same way as a REPL.
Next step: implement an actual REPL.



Swift SVN r1441
2012-04-16 23:52:01 +00:00