Files
carbon-lang/toolchain/semantics/testdata/function/basic.carbon
T
Jon Ross-Perkins 9d234aa7e7 Start doing name lookup for references (#2472)
When binding a name, add it to name lookup. On NameReference nodes, use name lookup.

- Switches from "identifiers" to the more generic "strings". Not strictly necessary here, but it's the overall direction I think we've agreed upon and wanted to do it while building more support out.
- Starts doing deduplication of strings.
- On BindName, registers names with name lookup.
- Does name lookup based on the deduplicated string.
  - Per discussion with zygoloid, design is intended to be constant-time lookup regardless of the number of parent scopes.
- Adds scopes so that we can track names which will be deregistered from lookup.
2022-12-20 10:10:23 -08:00

31 lines
1.1 KiB
Plaintext

// 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
//
// AUTOUPDATE
// RUN: %{carbon-run-semantics}
// CHECK:STDOUT: cross_reference_irs.size == 2,
// CHECK:STDOUT: cross_references = {
// CHECK:STDOUT: node_xref0 = xref(ir0, block0, node0);
// CHECK:STDOUT: node_xref1 = xref(ir0, block0, node1);
// CHECK:STDOUT: node_xref2 = xref(ir0, block0, node2);
// CHECK:STDOUT: node_xref3 = xref(ir0, block0, node3);
// CHECK:STDOUT: node_xref4 = xref(ir1, block0, node1);
// CHECK:STDOUT: },
// CHECK:STDOUT: integer_literals = {
// CHECK:STDOUT: },
// CHECK:STDOUT: strings = {
// CHECK:STDOUT: str0 = "Foo";
// CHECK:STDOUT: },
// CHECK:STDOUT: node_blocks = {
// CHECK:STDOUT: block0 = {
// CHECK:STDOUT: node0 = FunctionDeclaration();
// CHECK:STDOUT: node1 = BindName(str0, node0);
// CHECK:STDOUT: node2 = FunctionDefinition(node0, block1);
// CHECK:STDOUT: },
// CHECK:STDOUT: block1 = {
// CHECK:STDOUT: },
// CHECK:STDOUT: }
fn Foo() {}