Skip to content

Commit

Permalink
fix: rename return, collect proto deps, variadic
Browse files Browse the repository at this point in the history
  • Loading branch information
Medowhill committed Jul 10, 2024
1 parent 6eb6a03 commit 438ac33
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 6 deletions.
3 changes: 2 additions & 1 deletion src/compiler.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1640,7 +1640,8 @@ pub fn type_check(code: &str) -> Option<TypeCheckingResult> {
Applicability::HasPlaceholders => return None,
Applicability::MachineApplicable => {
if msg.contains(RELAX_MSG)
|| message.contains("can't pass `f32` to variadic function")
|| (message.contains("can't pass `")
&& message.contains("` to variadic function"))
{
return None;
} else {
Expand Down
30 changes: 25 additions & 5 deletions src/translation.rs
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,11 @@ impl<'ast> Translator<'ast> {
let term_types = variables
.iter()
.map(|(name, variable)| (*name, &variable.type_dependencies))
.chain(
protos
.iter()
.map(|(name, proto)| (*name, &proto.type_dependencies)),
)
.chain(
functions
.iter()
Expand Down Expand Up @@ -748,10 +753,18 @@ impl<'ast> Translator<'ast> {

fn collect_dependencies(
&self,
name: &str,
types: Option<&[TypeDependency<'ast>]>,
vars: Option<&[&'ast Node<Identifier>]>,
funcs: Option<&[&'ast Node<Identifier>]>,
) -> DependencyPrefixes {
tracing::info!(
"collect before ({})\n{:?}\n{:?}\n{:?}",
name,
types,
vars,
funcs
);
let mut types: Vec<_> = types.unwrap_or(&[]).iter().map(|x| x.typ).collect();
let mut vars: Vec<_> = vars
.unwrap_or(&[])
Expand Down Expand Up @@ -817,6 +830,13 @@ impl<'ast> Translator<'ast> {
vars.append(&mut trans);
self.make_types_transitive(&mut types, &vars, &funcs);

tracing::info!(
"collect after ({})\n{:?}\n{:?}\n{:?}",
name,
types,
vars,
funcs
);
let inner = self.inner.read().unwrap();
let deps = Self::dedup_items(inner.collect_dependencies(&types, &vars, &funcs));
let checking_prefix = std::iter::once(PREAMBLE.to_string())
Expand Down Expand Up @@ -1359,7 +1379,7 @@ impl<'ast> Translator<'ast> {
}
}

let prefixes = self.collect_dependencies(Some(&all_deps), None, None);
let prefixes = self.collect_dependencies(new_names[0], Some(&all_deps), None, None);
tracing::info!(
"translate_type translation_prefix ({:?})\n{}",
new_names,
Expand Down Expand Up @@ -1498,7 +1518,7 @@ impl<'ast> Translator<'ast> {

let tdeps = &var.type_dependencies;
let deps = &var.dependencies;
let prefixes = self.collect_dependencies(Some(tdeps), Some(deps), None);
let prefixes = self.collect_dependencies(new_name, Some(tdeps), Some(deps), None);

let mut vec = self.make_replace_vec(Some(tdeps), Some(deps), None);
vec.push((var.identifier.span, new_name));
Expand Down Expand Up @@ -1725,7 +1745,7 @@ impl<'ast> Translator<'ast> {
let code = self.program.variable_to_string(proto, vec, false);
tracing::info!("translate_proto code ({})\n{}", new_name, code);

let prefixes = self.collect_dependencies(Some(tdeps), Some(deps), None);
let prefixes = self.collect_dependencies(new_name, Some(tdeps), Some(deps), None);
let empty = vec![];
let translation_prefix = if self.config.provide_signatures {
&prefixes.translation_prefix
Expand Down Expand Up @@ -1815,7 +1835,7 @@ impl<'ast> Translator<'ast> {
code
);

let prefixes = self.collect_dependencies(Some(tdeps), Some(deps), Some(callees));
let prefixes = self.collect_dependencies(new_name, Some(tdeps), Some(deps), Some(callees));
tracing::info!(
"translate_function translation_prefix ({})\n{}",
new_name,
Expand Down Expand Up @@ -2302,4 +2322,4 @@ lazy_static! {
static ref KEYWORDS: BTreeSet<&'static str> = KEYWORDS_RAW.iter().copied().collect();
}

static KEYWORDS_RAW: [&str; 6] = ["main", "loop", "match", "where", "mod", "ref"];
static KEYWORDS_RAW: [&str; 7] = ["main", "loop", "match", "where", "mod", "ref", "return"];

0 comments on commit 438ac33

Please sign in to comment.