Disallow calling Print() at compile time (#2903)

Closes #2865
This commit is contained in:
Geoff Romer
2023-06-15 08:32:29 -07:00
committed by GitHub
parent 6f8cf38329
commit b03d0d542b
2 changed files with 18 additions and 0 deletions
+4
View File
@@ -1613,6 +1613,10 @@ auto Interpreter::StepExp() -> ErrorOr<Success> {
const auto& args = cast<TupleValue>(*act.results()[0]).elements();
switch (cast<IntrinsicExpression>(exp).intrinsic()) {
case IntrinsicExpression::Intrinsic::Print: {
if (phase_ != Phase::RunTime) {
return ProgramError(exp.source_loc())
<< "Print called before run time";
}
CARBON_ASSIGN_OR_RETURN(
Nonnull<const Value*> format_string_value,
Convert(args[0], arena_->New<StringType>(), exp.source_loc()));