summaryrefslogtreecommitdiffstats
path: root/test/expect/gccxml.any.Class-implicit-member-bad-base.xml.txt
Commit message (Collapse)AuthorAgeFilesLines
* Output: Generate throw="..." instead of throws="..."Michka Popoff2015-05-211-5/+5
| | | | | | Original gccxml output used the singular name, so we should too for compatibility. Fix this typo left from commit defc576826 (Output: Generate Function and related elements, 2014-02-12).
* Output: Drop unused index previously consumed by CvQualifiedType elementsBrad King2015-04-281-5/+5
| | | | | | | | Refactoring in the parent commit removed the need to consume a node index when creating a CvQualifiedType element. That commit preserved the behavior artificially in order to minimize differences in expected test output. Now remove this behavior and update the expected test output to account for the now-contiguous indexes.
* Output: Refactor generation of CvQualifiedType elementsBrad King2015-04-281-5/+5
| | | | | | | | | | | | | | | | | | | | | Previously our handling of cv-qualified types did not account for multiple locally cv-qualified types encountered through multiple levels of desugaring. This could lead to CvQualifiedType elements that reference elements that are generated with a different id. Refactor our internal representation of dump nodes to keep cv-qualifiers in the node ids. Teach AddTypeDumpNode to collect cv-qualifiers from each level of desugaring and compute their union. Once the desugared unqualified type is found, generate one CvQualifiedType element for the qualified type, if any. Update the expected test output to account for the new ordering of nodes. Mark the Class-template-constructor-template test case as no longer broken because this approach fixes it. Add test cases covering cv-qualifiers added at different layers of desugaring (via "T const" where T is already a "const" type in a template instantiation). GitHub-Issue: 10
* Output: Add "size" and "align" attributes on builtin types and structsMichka Popoff2015-04-081-3/+3
| | | | | | This information is produced by gccxml, so add it to our output too. Since we don't know the architecture that will be targeted during testing, match any size and align values with "[0-9]+".
* Output: Generate an "offset" attribute on Field elementsMichka Popoff2015-04-081-1/+1
| | | | This information is produced by gccxml, so add it to our output too.
* Output: Fix references to cv-qualified types encountered indirectlyBrad King2014-12-111-5/+5
| | | | | | | | | | | | Teach AddDumpNode to optionally report back the actual QualType that it selects after possibly unwrapping some layers of indirection in the Clang AST. Use this in GetTypeIdRef so that we check this actual QualType's cv qualifiers instead of the original QualType. Otherwise we may generate a dangling reference to the id number that is replaced by a CvQualifiedType id. Fix the expected output of existing test cases that exhibit this problem and add a new test case designed to cover the behavior explicitly.
* RunClang: Refactor definition of implicit membersBrad King2014-12-081-0/+26
Use clang::Sema::PerformPendingInstantiations before we attempt to add implicit member definitions so any real errors show up first. Then set SuppressAllDiagnostics to suppress errors caused by the following. Iterate over all members of one class at a time in order of completion of class definition (bases before derived classes). Force definition of each member using clang::Sema::MarkFunctionReferenced followed by another call to clang::Sema::PerformPendingInstantiations to ensure that members formed by implicitly instantiated templates are completed. Clang will mark any failed declaration as invalid, allowing us to exclude it from the output. This works both for implicit and explicit members. Update the test suite to mark test cases that are no longer 'broken'. According to discussion on the Clang cfe-commits mailing list: [PATCH] Add DiagnosticSuppressionScope RAII class http://thread.gmane.org/gmane.comp.compilers.clang.scm/110832/focus=111112 this approach may depend on non-guaranteed behavior. By iterating over members in order of class definition, we mark any bad special members invalid in base classes so that when Clang processes those in derived classes the invalid members are only one "step" away. Hopefully this behavior will be easier to preserve if Clang changes in the future.