Commit Graph

69 Commits

Author SHA1 Message Date
Ted Kremenek
4036074b56 Revert "Add a data structure for efficiently storing a byte-encoded"
This broke the Linux bot.

Swift SVN r29476
2015-06-18 04:39:30 +00:00
John McCall
c099ec8321 Add a data structure for efficiently storing a byte-encoded
sequence which can be read with a forward iterator.

This will be useful for storing access paths to metadata or
protocol conformance values, which are typically very short.

Swift SVN r29458
2015-06-17 21:34:00 +00:00
Jordan Rose
60c3154d95 Add swift::moveFileIfDifferent.
Equivalent to llvm::sys::fs::rename, except that if the destination file
exists and has the same contents as the source file, the source file is
simply deleted and the destination file is not touched.

Used in next commit.

Swift SVN r28041
2015-05-01 17:40:28 +00:00
Argyrios Kyrtzidis
0eac473455 [Basic] Add a utility function for parsing an editor placeholder.
Swift SVN r26214
2015-03-17 01:53:01 +00:00
Jordan Rose
2170a02b16 Fix implementation of OptionSet::contains.
AFAIK no functionality change because no one's been using OptionSet::contains
for anything but single flags.

Swift SVN r24527
2015-01-19 23:08:48 +00:00
John McCall
05c67279fb Add a new bit-vector implementation optimized for
IRGen's needs.

Swift SVN r24295
2015-01-09 03:02:39 +00:00
Dmitri Hrybenko
6670bb76ec Rewrite the CMake build system
Swift SVN r24124
2014-12-23 22:15:30 +00:00
Dmitri Hrybenko
87ed6c8a5b Demangler: add a unit test for the copied string quotation code
Swift SVN r20306
2014-07-22 13:14:26 +00:00
Doug Gregor
047989771a Generate different gyb outputs based on pointer size.
This is an egregious hack to work around FixedPoint.swift.gyb's
reliance on CMAKE_SIZEOF_VOID_P.

Swift SVN r19420
2014-07-01 17:11:40 +00:00
Dmitri Hrybenko
7704e19b7d libBasic: implement extended grapheme cluster segmentation algorithm
This is only for the frontend, not for stdlib.  The implementation is very
slow, optimizing it is the next step.

rdar://16755123 rdar://16013860


Swift SVN r18928
2014-06-16 14:20:43 +00:00
Dmitri Hrybenko
669f633070 Add "single extended grapheme cluster" literals (SEGCL) -- a subset of
double-quoted string literals that contain a single extended grapheme cluster

SEGCL by default infer type String, but you can ask to infer Character
for them.

Single quoted literals continue to infer Character.

Actual extended grapheme cluster segmentation is not implemented yet,
<rdar://problem/16755123> Implement extended grapheme cluster
segmentation in libSwiftBasic

This is part of
<rdar://problem/16363872> Remove single quoted characters

Swift SVN r17034
2014-04-29 14:08:16 +00:00
Doug Gregor
d6a173fead Add some utilities for working with camelCase names.
Swift SVN r15802
2014-04-02 15:18:32 +00:00
John McCall
272a81cc4e Add the SuccessorMap data structure.
A successor map is a somewhat targetted data structure which
is designed to give you the value for the lowest key that is
larger than the lookup key.

This is useful when applying a transformation that isn't
entirely one-to-one but where we nonetheless want to preserve
the original order as much as possible, e.g. when IR-genning
SILFunctions.

Swift SVN r14199
2014-02-21 02:22:00 +00:00
Argyrios Kyrtzidis
e7b15e3a7f [unittests] Link libswiftBasic to its unit tests.
Swift SVN r10041
2013-11-08 18:29:37 +00:00
Dmitri Hrybenko
5a88513e71 Don't link to curses library explicitly
LLVM build system has been fixed to pass down this linker flag automatically.


Swift SVN r7048
2013-08-08 17:46:52 +00:00
Dmitri Hrybenko
b1f6da2837 Add some tests for SourceManager routines that compare SourceLocs and SourceRanges
Swift SVN r7002
2013-08-07 21:32:19 +00:00
Adrian Prantl
1a0875bc3f Add curses library to the unit tests.
Swift SVN r6996
2013-08-07 20:24:22 +00:00
Argyrios Kyrtzidis
120ce20613 [cmake] Add 'Swift' prefix to unit test targets to avoid conflicts from clang targets.
Swift SVN r5937
2013-07-01 18:25:23 +00:00
Dmitri Hrybenko
f73d866d91 Implement delayed parsing for function bodies
In order to do this, we need to save and restore parser state easily.  The
important pieces of state are:

* lexer position;
* lexical scope stack.

Lexer position can be saved/restored easily.  We don't need to store the tokens
for the function body because swift does not have a preprocessor and we can
easily re-lex everything we need.  We just store the lexer state for the
beginning and the end of the body.

To save the lexical scope stack, we had to change the underlying data
structure.  Originally, the parser used the ScopedHashTable, which supports
only a stack of scopes.  But we need a *tree* of scopes.  I implemented
TreeScopedHashTable based on ScopedHashTable.  It has an optimization for
pushing/popping scopes in a stack fashion -- these scopes will not be allocated
on the heap.  While ‘detached’ scopes that we want to re-enter later, and all
their parent scopes, are moved to the heap.

In parseIntoTranslationUnit() we do a second pass over the 'structural AST'
that does not contain function bodies to actually parse them from saved token
ranges.


Swift SVN r5886
2013-06-28 22:38:10 +00:00