// Part of the Carbon Language project, under the Apache License v2.0 with LLVM // Exceptions. See /LICENSE for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception #include "toolchain/semantics/semantics_context.h" namespace Carbon { auto SemanticsHandleDeducedParameterList(SemanticsContext& context, ParseTree::Node parse_node) -> bool { return context.TODO(parse_node, "HandleDeducedParameterList"); } auto SemanticsHandleDeducedParameterListStart(SemanticsContext& context, ParseTree::Node parse_node) -> bool { return context.TODO(parse_node, "HandleDeducedParameterListStart"); } auto SemanticsHandleParameterList(SemanticsContext& context, ParseTree::Node parse_node) -> bool { auto refs_id = context.ParamOrArgEnd( /*for_args=*/false, ParseNodeKind::ParameterListStart); // TODO: This contains the IR block for parameters. At present, it's just // loose, but it's not strictly required for parameter refs; we should either // stop constructing it completely or, if it turns out to be needed, store it. // Note, the underlying issue is that the LLVM IR has nowhere clear to emit, // so changing storage would require addressing that problem. For comparison // with function calls, the IR needs to be emitted prior to the call. context.node_block_stack().Pop(); context.PopScope(); context.node_stack().PopAndDiscardSoloParseNode( ParseNodeKind::ParameterListStart); context.node_stack().Push(parse_node, refs_id); return true; } auto SemanticsHandleParameterListComma(SemanticsContext& context, ParseTree::Node /*parse_node*/) -> bool { context.ParamOrArgComma(/*for_args=*/false); return true; } auto SemanticsHandleParameterListStart(SemanticsContext& context, ParseTree::Node parse_node) -> bool { context.PushScope(); context.node_stack().Push(parse_node); context.node_block_stack().Push(); context.ParamOrArgStart(); return true; } } // namespace Carbon