Compilation

Struct Compilation 

Source
pub struct Compilation {
    pub program: Option<Program>,
    pub string_table: HashMap<LineId, StringInfo>,
    pub declarations: Vec<Declaration>,
    pub contains_implicit_string_tags: bool,
    pub file_tags: HashMap<String, Vec<String>>,
    pub warnings: Vec<Diagnostic>,
    pub debug_info: HashMap<String, DebugInfo>,
}
Expand description

The result of a compilation.

Instances of this struct are produced as a result of calling Compiler::compile.

§Implementation Notes

In contrast to the original implementation, where this struct was called a CompilationResult, we return an actual Result, so this type is guaranteed to only hold warnings as opposed to all diagnostics.

Fields§

§program: Option<Program>

The compiled Yarn program that the Compiler produced. produced.

This value will be None if the Compiler object’s Compiler::compilation_type value was not CompilationType::FullCompilation

§string_table: HashMap<LineId, StringInfo>

A dictionary mapping line IDs to StringInfo objects.

The string table contains the extracted line text found in the provided source code. The keys of this dictionary are the line IDs for each line - either through explicit line tags indicated through the #line: tag, or implicitly-generated line IDs that the compiler added during compilation.

§declarations: Vec<Declaration>

The collection of variable declarations that were found during compilation.

This value will be empty if the Compiler object’s CompilationType value was not CompilationType::FullCompilation.

§contains_implicit_string_tags: bool

A value indicating whether the compiler had to create line IDs for lines in the source code that lacked #line: tags.

Every line is required to have a line ID. If a line doesn’t have a line ID specified in the source code (via a #line: tag), the compiler will create one.

Implicit line IDs are guaranteed to remain the same between compilations when the source file does not change. If you want line IDs to remain the same when the source code may be modified in the future, add a #line: tag to the line. This may be done by hand, or added using the [Utility.AddTagsToLines] method.

§file_tags: HashMap<String, Vec<String>>

The collection of file-level tags found in the source code.

The keys of this dictionary are the file names (as indicated by the File::file_name field of the Compiler’s Compiler::files collection), and the values are the file tags associated with that file.

§warnings: Vec<Diagnostic>

The collection of Diagnostic objects that describe possible problems that the user should fix, but do not cause the compilation process to fail.

All diagnostics in this collection have a severity of DiagnosticSeverity::Warning. If there was an error during compilation, the compilation returns an Err variant containing error diagnostics instead of this Compilation.

§debug_info: HashMap<String, DebugInfo>

The collection of DebugInfo objects for each node in Program.

Trait Implementations§

Source§

impl Clone for Compilation

Source§

fn clone(&self) -> Compilation

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Compilation

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Compilation

Source§

fn default() -> Compilation

Returns the “default value” for a type. Read more
Source§

impl PartialEq for Compilation

Source§

fn eq(&self, other: &Compilation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Compilation

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> AnyExt for T
where T: Any + ?Sized,

Source§

fn downcast_ref<T>(this: &Self) -> Option<&T>
where T: Any,

Attempts to downcast this to T behind reference
Source§

fn downcast_mut<T>(this: &mut Self) -> Option<&mut T>
where T: Any,

Attempts to downcast this to T behind mutable reference
Source§

fn downcast_rc<T>(this: Rc<Self>) -> Result<Rc<T>, Rc<Self>>
where T: Any,

Attempts to downcast this to T behind Rc pointer
Source§

fn downcast_arc<T>(this: Arc<Self>) -> Result<Arc<T>, Arc<Self>>
where T: Any,

Attempts to downcast this to T behind Arc pointer
Source§

fn downcast_box<T>(this: Box<Self>) -> Result<Box<T>, Box<Self>>
where T: Any,

Attempts to downcast this to T behind Box pointer
Source§

fn downcast_move<T>(this: Self) -> Option<T>
where T: Any, Self: Sized,

Attempts to downcast owned Self to T, useful only in generic context as a workaround for specialization
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, X> CoerceTo<T> for X
where T: CoerceFrom<X> + ?Sized,

Source§

fn coerce_rc_to(self: Rc<X>) -> Rc<T>

Source§

fn coerce_box_to(self: Box<X>) -> Box<T>

Source§

fn coerce_ref_to(&self) -> &T

Source§

fn coerce_mut_to(&mut self) -> &mut T

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V