diff --git a/include/ifc/reader.hxx b/include/ifc/reader.hxx index f47e7f3..78799a8 100644 --- a/include/ifc/reader.hxx +++ b/include/ifc/reader.hxx @@ -250,35 +250,36 @@ namespace ifc { // clang-format off switch (index.sort()) { - case DeclSort::Enumerator: return std::forward(f)(index, get(index)); - case DeclSort::Variable: return std::forward(f)(index, get(index)); - case DeclSort::Parameter: return std::forward(f)(index, get(index)); - case DeclSort::Field: return std::forward(f)(index, get(index)); - case DeclSort::Bitfield: return std::forward(f)(index, get(index)); - case DeclSort::Scope: return std::forward(f)(index, get(index)); - case DeclSort::Enumeration: return std::forward(f)(index, get(index)); - case DeclSort::Alias: return std::forward(f)(index, get(index)); - case DeclSort::Temploid: return std::forward(f)(index, get(index)); - case DeclSort::Template: return std::forward(f)(index, get(index)); - case DeclSort::PartialSpecialization: return std::forward(f)(index, get(index)); - case DeclSort::Specialization: return std::forward(f)(index, get(index)); - case DeclSort::Concept: return std::forward(f)(index, get(index)); - case DeclSort::Function: return std::forward(f)(index, get(index)); - case DeclSort::Method: return std::forward(f)(index, get(index)); - case DeclSort::Constructor: return std::forward(f)(index, get(index)); - case DeclSort::InheritedConstructor: return std::forward(f)(index, get(index)); - case DeclSort::Destructor: return std::forward(f)(index, get(index)); - case DeclSort::Reference: return std::forward(f)(index, get(index)); - case DeclSort::Using: return std::forward(f)(index, get(index)); - case DeclSort::Friend: return std::forward(f)(index, get(index)); - case DeclSort::Expansion: return std::forward(f)(index, get(index)); - case DeclSort::DeductionGuide: return std::forward(f)(index, get(index)); - case DeclSort::Tuple: return std::forward(f)(index, get(index)); - case DeclSort::Intrinsic: return std::forward(f)(index, get(index)); - case DeclSort::Property: return std::forward(f)(index, get(index)); - case DeclSort::OutputSegment: return std::forward(f)(index, get(index)); - case DeclSort::SyntaxTree: return std::forward(f)(index, get(index)); - case DeclSort::Barren: return std::forward(f)(index, get(index)); + case DeclSort::Enumerator: return std::forward(f)(index, get(index)); + case DeclSort::Variable: return std::forward(f)(index, get(index)); + case DeclSort::Parameter: return std::forward(f)(index, get(index)); + case DeclSort::Field: return std::forward(f)(index, get(index)); + case DeclSort::Bitfield: return std::forward(f)(index, get(index)); + case DeclSort::Scope: return std::forward(f)(index, get(index)); + case DeclSort::Enumeration: return std::forward(f)(index, get(index)); + case DeclSort::Alias: return std::forward(f)(index, get(index)); + case DeclSort::Temploid: return std::forward(f)(index, get(index)); + case DeclSort::Template: return std::forward(f)(index, get(index)); + case DeclSort::PartialSpecialization: return std::forward(f)(index, get(index)); + case DeclSort::Specialization: return std::forward(f)(index, get(index)); + case DeclSort::Concept: return std::forward(f)(index, get(index)); + case DeclSort::Function: return std::forward(f)(index, get(index)); + case DeclSort::Method: return std::forward(f)(index, get(index)); + case DeclSort::Constructor: return std::forward(f)(index, get(index)); + case DeclSort::InheritedConstructor: return std::forward(f)(index, get(index)); + case DeclSort::Destructor: return std::forward(f)(index, get(index)); + case DeclSort::Reference: return std::forward(f)(index, get(index)); + case DeclSort::Using: return std::forward(f)(index, get(index)); + case DeclSort::Friend: return std::forward(f)(index, get(index)); + case DeclSort::Expansion: return std::forward(f)(index, get(index)); + case DeclSort::DeductionGuide: return std::forward(f)(index, get(index)); + case DeclSort::Tuple: return std::forward(f)(index, get(index)); + case DeclSort::Intrinsic: return std::forward(f)(index, get(index)); + case DeclSort::Property: return std::forward(f)(index, get(index)); + case DeclSort::OutputSegment: return std::forward(f)(index, get(index)); + case DeclSort::SyntaxTree: return std::forward(f)(index, get(index)); + case DeclSort::Barren: return std::forward(f)(index, get(index)); + case DeclSort::DefaultArgument: return std::forward(f)(index, get(index)); case DeclSort::VendorExtension: case DeclSort::Count: @@ -350,6 +351,7 @@ namespace ifc { case ExprSort::PackedTemplateArguments: return std::forward(f)(get(index)); case ExprSort::Tokens: return std::forward(f)(get(index)); case ExprSort::AssignInitializer: return std::forward(f)(get(index)); + case ExprSort::Statement: return std::forward(f)(get(index)); case ExprSort::VendorExtension: case ExprSort::Generic: // C11 generic extension (no IFC structure yet) diff --git a/src/ifc-dom/decls.cxx b/src/ifc-dom/decls.cxx index 0120833..02e4da1 100644 --- a/src/ifc-dom/decls.cxx +++ b/src/ifc-dom/decls.cxx @@ -386,6 +386,12 @@ namespace ifc::util { // TODO: Add more detail. load_common_props(ctx, node, decl); } + + void operator()(DeclIndex, const symbolic::DefaultArgumentDecl& decl) + { + // TODO: Add more detail. + load_common_props(ctx, node, decl); + } }; void load(Loader& ctx, Node& node, DeclIndex index) diff --git a/src/ifc-dom/exprs.cxx b/src/ifc-dom/exprs.cxx index 1b1787f..420bbcf 100644 --- a/src/ifc-dom/exprs.cxx +++ b/src/ifc-dom/exprs.cxx @@ -357,7 +357,7 @@ namespace ifc::util { void load(Loader& ctx, Node& node, symbolic::DefaultIndex index) { - load(ctx, node, std::bit_cast(index)); + load(ctx, node, as_expr_index(index)); } std::string expr_list(Loader& ctx, ExprIndex index, std::string delimiters)