Skip to content

Commit

Permalink
deploy: 512acac
Browse files Browse the repository at this point in the history
  • Loading branch information
raviqqe committed Feb 18, 2024
1 parent 99b6e0a commit d821822
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 80 deletions.
16 changes: 3 additions & 13 deletions src/melior_macro/dialect.rs.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,6 @@
<a href="#111" id="111">111</a>
<a href="#112" id="112">112</a>
<a href="#113" id="113">113</a>
<a href="#114" id="114">114</a>
<a href="#115" id="115">115</a>
<a href="#116" id="116">116</a>
<a href="#117" id="117">117</a>
<a href="#118" id="118">118</a>
</pre></div><pre class="rust"><code><span class="kw">mod </span>error;
<span class="kw">mod </span>generation;
<span class="kw">mod </span>input;
Expand Down Expand Up @@ -187,14 +182,9 @@
.map(Operation::new)
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span class="kw">_</span>&gt;, <span class="kw">_</span>&gt;&gt;()<span class="question-mark">?
</span>.iter()
.map(|operation| {
<span class="prelude-val">Ok</span>::&lt;<span class="kw">_</span>, Error&gt;(<span class="kw">if </span>operation.dialect_name()<span class="question-mark">? </span>== dialect_name {
<span class="prelude-val">Some</span>(generate_operation(operation)<span class="question-mark">?</span>)
} <span class="kw">else </span>{
<span class="prelude-val">None
</span>})
})
.collect::&lt;<span class="prelude-ty">Result</span>&lt;Vec&lt;<span class="kw">_</span>&gt;, <span class="kw">_</span>&gt;&gt;()<span class="question-mark">?</span>;
.filter(|operation| operation.dialect_name() == dialect_name)
.map(generate_operation)
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();

<span class="kw">let </span>doc = <span class="macro">format!</span>(
<span class="string">"`{name}` dialect.\n\n{}"</span>,
Expand Down
16 changes: 7 additions & 9 deletions src/melior_macro/dialect/generation.rs.html
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@
<a href="#106" id="106">106</a>
<a href="#107" id="107">107</a>
<a href="#108" id="108">108</a>
<a href="#109" id="109">109</a>
</pre></div><pre class="rust"><code><span class="kw">mod </span>attribute_accessor;
<span class="kw">mod </span>element_accessor;
<span class="kw">mod </span>operand_accessor;
Expand All @@ -127,13 +126,12 @@
successor_accessor::generate_successor_accessor,
};
<span class="kw">use </span><span class="kw">super</span>::operation::{Operation, OperationBuilder};
<span class="kw">use </span><span class="kw">crate</span>::dialect::error::Error;
<span class="kw">use </span>proc_macro2::TokenStream;
<span class="kw">use </span>quote::{format_ident, quote};

<span class="kw">pub fn </span>generate_operation(operation: <span class="kw-2">&amp;</span>Operation) -&gt; <span class="prelude-ty">Result</span>&lt;TokenStream, Error&gt; {
<span class="kw">pub fn </span>generate_operation(operation: <span class="kw-2">&amp;</span>Operation) -&gt; TokenStream {
<span class="kw">let </span>summary = operation.summary();
<span class="kw">let </span>description = operation.description()<span class="question-mark">?</span>;
<span class="kw">let </span>description = operation.description();
<span class="kw">let </span>identifier = <span class="macro">format_ident!</span>(<span class="string">"{}"</span>, operation.name());
<span class="kw">let </span>operation_name = operation.full_operation_name();

Expand Down Expand Up @@ -163,11 +161,11 @@
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();

<span class="kw">let </span>builder = OperationBuilder::new(operation);
<span class="kw">let </span>builder_tokens = generate_operation_builder(<span class="kw-2">&amp;</span>builder)<span class="question-mark">?</span>;
<span class="kw">let </span>builder_tokens = generate_operation_builder(<span class="kw-2">&amp;</span>builder);
<span class="kw">let </span>builder_fn = generate_operation_builder_fn(<span class="kw-2">&amp;</span>builder);
<span class="kw">let </span>default_constructor = generate_default_constructor(<span class="kw-2">&amp;</span>builder)<span class="question-mark">?</span>;
<span class="kw">let </span>default_constructor = generate_default_constructor(<span class="kw-2">&amp;</span>builder);

<span class="prelude-val">Ok</span>(<span class="macro">quote! </span>{
<span class="macro">quote! </span>{
<span class="attr">#[doc = #summary]
#[doc = <span class="string">"\n\n"</span>]
#[doc = #description]
Expand Down Expand Up @@ -204,7 +202,7 @@

<span class="kw">fn </span>try_from(
operation: ::melior::ir::operation::Operation&lt;<span class="lifetime">'c</span>&gt;,
) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>, <span class="self">Self</span>::Error&gt; {
) -&gt; <span class="prelude-ty">Result</span>&lt;<span class="self">Self</span>, <span class="self">Self</span>::Error&gt; {
<span class="comment">// TODO Check an operation name.
</span><span class="prelude-val">Ok</span>(<span class="self">Self </span>{ operation })
}
Expand All @@ -215,6 +213,6 @@
operation.operation
}
}
})
}
}
</code></pre></div></section></main></body></html>
48 changes: 20 additions & 28 deletions src/melior_macro/dialect/generation/operation_builder.rs.html
Original file line number Diff line number Diff line change
Expand Up @@ -194,19 +194,11 @@
<a href="#193" id="193">193</a>
<a href="#194" id="194">194</a>
<a href="#195" id="195">195</a>
<a href="#196" id="196">196</a>
<a href="#197" id="197">197</a>
<a href="#198" id="198">198</a>
<a href="#199" id="199">199</a>
</pre></div><pre class="rust"><code><span class="kw">use </span><span class="kw">crate</span>::dialect::{
error::Error,
operation::{OperationBuilder, OperationField},
utility::sanitize_snake_case_identifier,
};
</pre></div><pre class="rust"><code><span class="kw">use </span><span class="kw">crate</span>::dialect::operation::{OperationBuilder, OperationField};
<span class="kw">use </span>proc_macro2::TokenStream;
<span class="kw">use </span>quote::{format_ident, quote};

<span class="kw">pub fn </span>generate_operation_builder(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; <span class="prelude-ty">Result</span>&lt;TokenStream, Error&gt; {
<span class="kw">pub fn </span>generate_operation_builder(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; TokenStream {
<span class="kw">let </span>result_fns = <span class="kw">if </span>builder.operation().can_infer_type() {
Default::default()
} <span class="kw">else </span>{
Expand Down Expand Up @@ -238,7 +230,7 @@
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();

<span class="kw">let </span>new_fn = generate_new_fn(builder);
<span class="kw">let </span>build_fn = generate_build_fn(builder)<span class="question-mark">?</span>;
<span class="kw">let </span>build_fn = generate_build_fn(builder);

<span class="kw">let </span>identifier = builder.identifier();
<span class="kw">let </span>doc = <span class="macro">format!</span>(
Expand All @@ -248,7 +240,7 @@
<span class="kw">let </span>type_arguments = builder.type_state().parameters();
<span class="kw">let </span>state_types = builder.type_state().parameters();

<span class="prelude-val">Ok</span>(<span class="macro">quote! </span>{
<span class="macro">quote! </span>{
<span class="attr">#[doc = #doc]
</span><span class="kw">pub struct </span>#identifier&lt;<span class="lifetime">'c</span>, #(#type_arguments),<span class="kw-2">*</span>&gt; {
builder: ::melior::ir::operation::OperationBuilder&lt;<span class="lifetime">'c</span>&gt;,
Expand All @@ -265,7 +257,7 @@
#(#attribute_fns)*

#build_fn
})
}
}

<span class="comment">// TODO Split this function for different kinds of fields.
Expand Down Expand Up @@ -311,7 +303,7 @@
}
}

<span class="kw">fn </span>generate_build_fn(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; <span class="prelude-ty">Result</span>&lt;TokenStream, Error&gt; {
<span class="kw">fn </span>generate_build_fn(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; TokenStream {
<span class="kw">let </span>identifier = builder.identifier();
<span class="kw">let </span>arguments = builder.type_state().arguments_all_set(<span class="bool-val">true</span>);
<span class="kw">let </span>operation_identifier = <span class="macro">format_ident!</span>(<span class="string">"{}"</span>, <span class="kw-2">&amp;</span>builder.operation().name());
Expand All @@ -321,13 +313,13 @@
.can_infer_type()
.then_some(<span class="macro">quote! </span>{ .enable_result_type_inference() });

<span class="prelude-val">Ok</span>(<span class="macro">quote! </span>{
<span class="macro">quote! </span>{
<span class="kw">impl</span>&lt;<span class="lifetime">'c</span>&gt; #identifier&lt;<span class="lifetime">'c</span>, #(#arguments),<span class="kw-2">*</span>&gt; {
<span class="kw">pub fn </span>build(<span class="self">self</span>) -&gt; #operation_identifier&lt;<span class="lifetime">'c</span>&gt; {
<span class="self">self</span>.builder #maybe_infer.build().expect(<span class="string">"valid operation"</span>).try_into().expect(#error)
}
}
})
}
}

<span class="kw">fn </span>generate_new_fn(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; TokenStream {
Expand Down Expand Up @@ -363,38 +355,38 @@
}
}

<span class="kw">pub fn </span>generate_default_constructor(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; <span class="prelude-ty">Result</span>&lt;TokenStream, Error&gt; {
<span class="kw">let </span>identifier = <span class="macro">format_ident!</span>(<span class="string">"{}"</span>, <span class="kw-2">&amp;</span>builder.operation().name());
<span class="kw">let </span>name = sanitize_snake_case_identifier(builder.operation().operation_name())<span class="question-mark">?</span>;
<span class="kw">pub fn </span>generate_default_constructor(builder: <span class="kw-2">&amp;</span>OperationBuilder) -&gt; TokenStream {
<span class="kw">let </span>operation_identifier = <span class="macro">format_ident!</span>(<span class="string">"{}"</span>, <span class="kw-2">&amp;</span>builder.operation().name());
<span class="kw">let </span>constructor_identifier = builder.operation().constructor_identifier();
<span class="kw">let </span>arguments = builder
.operation()
.required_fields()
.map(|field| {
<span class="kw">let </span>parameter_type = <span class="kw-2">&amp;</span>field.parameter_type();
<span class="kw">let </span>parameter_name = <span class="kw-2">&amp;</span>field.singular_identifier();
<span class="kw">let </span>r#type = <span class="kw-2">&amp;</span>field.parameter_type();
<span class="kw">let </span>name = <span class="kw-2">&amp;</span>field.singular_identifier();

<span class="macro">quote! </span>{ #parameter_name: #parameter_type }
<span class="macro">quote! </span>{ #name: #r#type }
})
.chain([<span class="macro">quote! </span>{ location: ::melior::ir::Location&lt;<span class="lifetime">'c</span>&gt; }])
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();
<span class="kw">let </span>builder_calls = builder
.operation()
.required_fields()
.map(|field| {
<span class="kw">let </span>parameter_name = <span class="kw-2">&amp;</span>field.singular_identifier();
<span class="kw">let </span>name = <span class="kw-2">&amp;</span>field.singular_identifier();

<span class="macro">quote! </span>{ .#parameter_name(#parameter_name) }
<span class="macro">quote! </span>{ .#name(#name) }
})
.collect::&lt;Vec&lt;<span class="kw">_</span>&gt;&gt;();

<span class="kw">let </span>doc = <span class="macro">format!</span>(<span class="string">"Creates {}."</span>, builder.operation().documentation_name());

<span class="prelude-val">Ok</span>(<span class="macro">quote! </span>{
<span class="macro">quote! </span>{
<span class="attr">#[allow(clippy::too_many_arguments)]
#[doc = #doc]
</span><span class="kw">pub fn </span>#name&lt;<span class="lifetime">'c</span>&gt;(context: <span class="kw-2">&amp;</span><span class="lifetime">'c </span>::melior::Context, #(#arguments),<span class="kw-2">*</span>) -&gt; #identifier&lt;<span class="lifetime">'c</span>&gt; {
#identifier::builder(context, location)#(#builder_calls)<span class="kw-2">*</span>.build()
</span><span class="kw">pub fn </span>#constructor_identifier&lt;<span class="lifetime">'c</span>&gt;(context: <span class="kw-2">&amp;</span><span class="lifetime">'c </span>::melior::Context, #(#arguments),<span class="kw-2">*</span>) -&gt; #operation_identifier&lt;<span class="lifetime">'c</span>&gt; {
#operation_identifier::builder(context, location)#(#builder_calls)<span class="kw-2">*</span>.build()
}
})
}
}
</code></pre></div></section></main></body></html>
Loading

0 comments on commit d821822

Please sign in to comment.