Files
carbon-lang/toolchain/semantics/semantics_node_kind.def
T
Jon Ross-Perkins 4c8fdf5124 Start drafting out semantic type checking. (#2406)
This is a first pass at what semantic type checking might look like. Types propagate along nodes, we use an InvalidType object when there's an error, and once there's an InvalidType we stop doing so much type checking.

This adds some RealLiteral handling in order to get type mismatches. I'm cautious about creating some real value for SemanticsIR (since the tokenized buffer version is a bit constrained), so I'm not doing that yet. But I will probably need to in order to maintain SemanticsIR having hermetic copies of its data, without a parse tree dependency.
2022-11-17 13:36:40 -08:00

30 lines
1.1 KiB
Modula-2

// 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
//
// Note that this is an X-macro header.
//
// It does not use `#include` guards, and instead is designed to be `#include`ed
// after the x-macro is defined in order for its inclusion to expand to the
// desired output. The x-macro for this header is `CARBON_PARSE_NODE_KIND`. The
// definition provided will be removed at the end of this file to clean up.
#ifndef CARBON_SEMANTICS_NODE_KIND
#error "Must define the x-macro to use this file."
#endif
CARBON_SEMANTICS_NODE_KIND(Invalid)
CARBON_SEMANTICS_NODE_KIND(BinaryOperatorAdd)
CARBON_SEMANTICS_NODE_KIND(BindName)
CARBON_SEMANTICS_NODE_KIND(Builtin)
CARBON_SEMANTICS_NODE_KIND(CodeBlock)
CARBON_SEMANTICS_NODE_KIND(FunctionDeclaration)
CARBON_SEMANTICS_NODE_KIND(FunctionDefinition)
CARBON_SEMANTICS_NODE_KIND(IntegerLiteral)
CARBON_SEMANTICS_NODE_KIND(RealLiteral)
CARBON_SEMANTICS_NODE_KIND(Return)
CARBON_SEMANTICS_NODE_KIND(ReturnExpression)
#undef CARBON_SEMANTICS_NODE_KIND