///|
/// Return whether parsing completed without a syntax error.
pub fn ParseResult::is_valid(self : ParseResult) -> Bool {
self.errors.length() == 0
}
///|
/// Return the number of modules recovered from the input.
pub fn ParseResult::module_count(self : ParseResult) -> Int {
self.design.modules.length()
}
///|
/// Return parser error messages in source order.
pub fn ParseResult::error_messages(self : ParseResult) -> Array[String] {
let messages : Array[String] = []
for error in self.errors {
messages.push(error.message)
}
messages
}
///|
/// Return the first error span, if recovery produced an error.
pub fn ParseResult::first_error_span(self : ParseResult) -> @source.Span? {
if self.errors.length() == 0 {
None
} else {
Some(self.errors[0].span)
}
}
///|
/// Return recovered module names even when later syntax is invalid.
pub fn ParseResult::module_names(self : ParseResult) -> Array[String] {
self.design.module_names()
}
///|
/// Return whether at least one module was recovered.
pub fn ParseResult::has_modules(self : ParseResult) -> Bool {
self.module_count() > 0
}