mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 21:30:12 +01:00
When declaring an associated entity in an interface -- just associated functions for now -- create an associated entity value and corresponding type to represent a "slot in a witness table". Also track the list of associated entities on the interface so that we will eventually be able to check impls against them. Associated entities are represented as the integer index of their slot in a witness table. --------- Co-authored-by: Jon Ross-Perkins <jperkins@google.com>
23 lines
847 B
C++
23 lines
847 B
C++
// 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
|
|
|
|
#ifndef CARBON_TOOLCHAIN_CHECK_INTERFACE_H_
|
|
#define CARBON_TOOLCHAIN_CHECK_INTERFACE_H_
|
|
|
|
#include "toolchain/check/context.h"
|
|
#include "toolchain/sem_ir/ids.h"
|
|
|
|
namespace Carbon::Check {
|
|
|
|
// Builds and returns an associated entity for `interface_id` corresponding to
|
|
// the declaration `decl_id`, which can be an associated function or an
|
|
// associated constant. Registers the associated entity in the list for the
|
|
// interface.
|
|
auto BuildAssociatedEntity(Context& context, SemIR::InterfaceId interface_id,
|
|
SemIR::InstId decl_id) -> SemIR::InstId;
|
|
|
|
} // namespace Carbon::Check
|
|
|
|
#endif // CARBON_TOOLCHAIN_CHECK_INTERFACE_H_
|