[tint] Don't resolve moving from ProgramBuilder -> Program
Do this explicitly instead.
Breaks a circular dependency between Program and Resolver.
Change-Id: I67f66501da02f349b981a59ef64cb8b687230f95
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/143401
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: James Price <jrprice@google.com>
Commit-Queue: Ben Clayton <bclayton@google.com>
diff --git a/docs/tint/arch.md b/docs/tint/arch.md
index 704e7c4..586d529 100644
--- a/docs/tint/arch.md
+++ b/docs/tint/arch.md
@@ -68,9 +68,10 @@
AST nodes. A `ProgramBuilder` can only be used once, and must be discarded after
the `Program` is constructed.
-A `Program` is built from the `ProgramBuilder` by `std::move()`ing the
-`ProgramBuilder` to a new `Program` object. When built, resolution is performed
-so the produced `Program` will contain all the needed semantic information.
+A `Program` is built from the `ProgramBuilder` via a call to
+`resolver::Resolve()`, which will perform validation and semantic analysis.
+The returned program will contain the semantic information which can be obtained
+by calling `Program::Sem()`.
At any time before building the `Program`, `ProgramBuilder::IsValid()` may be
called to ensure that no error diagnostics have been raised during the