summaryrefslogtreecommitdiffstats
path: root/www/OpenProjects.html
diff options
context:
space:
mode:
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