summaryrefslogtreecommitdiffstats
path: root/www/OpenProjects.html
diff options
context:
space:
mode:
authorDouglas Gregor <dgregor@apple.com>2009-03-20 20:37:36 +0000
committerDouglas Gregor <dgregor@apple.com>2009-03-20 20:37:36 +0000
commit252356597a4f0a0a8cb01e32d3da0522b3aa0ebd (patch)
treeacb722bd104fff101a0c73225d89c20f31d362f0 /www/OpenProjects.html
parent2ff44784d180bb96953c22de4a0b2efb5d50263a (diff)
Document some small- to mid-size open C++ projects
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@67398 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'www/OpenProjects.html')
-rw-r--r--www/OpenProjects.html22
1 files changed, 17 insertions, 5 deletions
diff --git a/www/OpenProjects.html b/www/OpenProjects.html
index 47307ca3ba..2b9552dce4 100644
--- a/www/OpenProjects.html
+++ b/www/OpenProjects.html
@@ -40,11 +40,6 @@ checks in some cases, and it would be very interesting to test code in this mode
for certain crowds of people. Because the inserted code is coming from clang,
the "abort" message could be very detailed about exactly what went wrong.</li>
-<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big
-job, but there are lots of little pieces that can be picked off and implemented.
-See the <a href="cxx_status.html">C++ status report page</a> to find out what is
-missing and what is already at least partially supported.</li>
-
<li><b>Improve target support</b>: The current target interfaces are heavily
stubbed out and need to be implemented fully. See the FIXME's in TargetInfo.
Additionally, the actual target implementations (instances of TargetInfoImpl)
@@ -88,6 +83,23 @@ improve the quality of clang by self-testing. Some examples:
</ul>
</li>
+<li><b>Continue work on C++ support</b>: Implementing all of C++ is a very big
+job, but there are lots of little pieces that can be picked off and implemented. Here are some small- to mid-sized C++ implementation projects:
+<ul>
+ <li>Using declarations: These are completely unsupported at the moment.</li>
+ <li>Type-checking for the conditional operator (? :): this currently follows C semantics, not C++ semantics.</li>
+ <li>Type-checking for explicit conversions: currently follows C semantics, not C++ semantics.</li>
+ <li>Type-checking for copy assignment: Clang parses overloaded copy-assignment operators, but they aren't used as part of assignment syntax ("a = b").</li>
+ <li>Qualified member references: C++ supports qualified member references such as <code>x-&gt;Base::foo</code>, but Clang has no parsing or semantic analysis for them.</li>
+ <li>Virtual functions: Clang parses <code>virtual</code> and attaches it to the AST. However, it does not determine whether a given function overrides a virtual function in a base class, nor does it determine when a class is abstract.</li>
+ <li>Implicit definitions of special member functions: Clang implicitly declares the various special member functions (default constructor, copy constructor, copy assignment operator, destructor) when necessary, but is not yet able to provide definitions for these functions.</li>
+ <li>Parsing and AST representations of friend classes and functions</li>
+ <li>AST representation for implicit C++ conversions: implicit conversions that involve non-trivial operations (e.g., invoking a user-defined conversion function, performing a base-to-derived or derived-to-base conversion) need explicit representation in Clang's AST.</li>
+</ul>
+
+Also, see the <a href="cxx_status.html">C++ status report page</a> to
+find out what is missing and what is already at least partially
+supported.</li>
</ul>
<p>If you hit a bug with clang, it is very useful for us if you reduce the code