Skip to content
This repository has been archived by the owner on Jul 29, 2024. It is now read-only.

Commit

Permalink
Normalize function call printing (#164)
Browse files Browse the repository at this point in the history
  • Loading branch information
gavrilikhin-d authored May 14, 2024
1 parent 996b208 commit be137f8
Show file tree
Hide file tree
Showing 31 changed files with 304 additions and 310 deletions.
20 changes: 7 additions & 13 deletions src/hir/expressions/call.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use derive_visitor::DriveMut;

use crate::hir::{Expression, Function, FunctionNamePart, Generic, Type, Typed};
use crate::hir::{Expression, Function, Generic, Type, Typed};
use crate::mutability::Mutable;
use crate::named::Named;
use crate::syntax::Ranged;
use std::fmt::Display;
use std::ops::Range;
Expand Down Expand Up @@ -31,22 +32,15 @@ impl Display for Call {
let indent = "\t".repeat(f.width().unwrap_or(0));
write!(f, "{indent}")?;

let mut arg = self.args.iter();

write!(
f,
"{}",
self.function
.read()
.unwrap()
.name_parts()
"`{}`({})",
self.function.name(),
self.args
.iter()
.map(|part| match part {
FunctionNamePart::Text(text) => text.to_string(),
FunctionNamePart::Parameter(_) => arg.next().unwrap().to_string(),
})
.map(|arg| arg.to_string())
.collect::<Vec<_>>()
.join(" ")
.join(", ")
)
}
}
Expand Down
14 changes: 7 additions & 7 deletions src/tests/snapshots/ppl__tests__address_of.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@ source: src/tests/mod.rs
expression: hir
---
let x: Integer = 0
let address: MemoryAddress = address of (&x:Reference<Integer>)
let x_mut_ref: ReferenceMut<Integer> = (Type<Integer>:Type<Integer>) at (address:MemoryAddress)
println clone (x:Integer)
let address: MemoryAddress = `address of <:Reference<Integer>>`((&x:Reference<Integer>))
let x_mut_ref: ReferenceMut<Integer> = `<:Type<Integer>> at <:MemoryAddress>`((Type<Integer>:Type<Integer>), (address:MemoryAddress))
`println <:Integer>`(`clone <:Reference<Integer>>`((x:Integer)))
(x_mut_ref:ReferenceMut<Integer>) = 1
println clone (x:Integer)
destroy (x:Integer)
`println <:Integer>`(`clone <:Reference<Integer>>`((x:Integer)))
`destroy <:ReferenceMut<Integer>>`((x:Integer))
==MONOMORPHIZED==
Expand All @@ -23,7 +23,7 @@ fn<Integer> <ty: Type<Integer>> at <address: MemoryAddress> -> ReferenceMut<Inte
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
Expand All @@ -32,5 +32,5 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
160 changes: 80 additions & 80 deletions src/tests/snapshots/ppl__tests__array.hir.snap

Large diffs are not rendered by default.

24 changes: 12 additions & 12 deletions src/tests/snapshots/ppl__tests__clone.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@ source: src/tests/mod.rs
expression: hir
---
let mut x: Integer = 1
let mut y: Integer = clone (x:Integer)
println clone (x:Integer)
println clone (y:Integer)
destroy (y:Integer)
let mut y: Integer = `clone <:Reference<Integer>>`((x:Integer))
`println <:Integer>`(`clone <:Reference<Integer>>`((x:Integer)))
`println <:Integer>`(`clone <:Reference<Integer>>`((y:Integer)))
`destroy <:ReferenceMut<Integer>>`((y:Integer))
(y:Integer) = 2
println clone (x:Integer)
println clone (y:Integer)
destroy (x:Integer)
destroy (y:Integer)
`println <:Integer>`(`clone <:Reference<Integer>>`((x:Integer)))
`println <:Integer>`(`clone <:Reference<Integer>>`((y:Integer)))
`destroy <:ReferenceMut<Integer>>`((x:Integer))
`destroy <:ReferenceMut<Integer>>`((y:Integer))
==MONOMORPHIZED==
Expand All @@ -20,7 +20,7 @@ destroy (y:Integer)
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
Expand All @@ -29,7 +29,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
Expand All @@ -38,7 +38,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
Expand All @@ -47,5 +47,5 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
4 changes: 2 additions & 2 deletions src/tests/snapshots/ppl__tests__common_functions.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ source: src/tests/mod.rs
expression: hir
---
fn foo -> None:
let $tmp@10: None = println "foo"
let $tmp@10: None = `println <:String>`("foo")
return ($tmp@10:None)

foo
`foo`()
2 changes: 1 addition & 1 deletion src/tests/snapshots/ppl__tests__deps.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ source: src/tests/mod.rs
expression: hir
---
use helper.*
say hello
`say hello`()
6 changes: 3 additions & 3 deletions src/tests/snapshots/ppl__tests__deref_member_ref.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,11 @@ type Point:


fn x of <p: Reference<Point>> -> Integer:
let $tmp@61: Integer = clone (*p:Point).x
let $tmp@61: Integer = `clone <:Reference<Integer>>`((*p:Point).x)
return ($tmp@61:Integer)
let $tmp@80: Point = Point { x: 1, y: 2 }
println x of (&$tmp@80:Reference<Point>)
`println <:Integer>`(`x of <:Reference<Point>>`((&$tmp@80:Reference<Point>)))
==MONOMORPHIZED==
Expand All @@ -21,5 +21,5 @@ println x of (&$tmp@80:Reference<Point>)
fn String from <$arg0: Integer> -> String
fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
8 changes: 4 additions & 4 deletions src/tests/snapshots/ppl__tests__destructor.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ expression: hir
type DestructibleClass

fn destroy <$arg0: ReferenceMut<DestructibleClass>> -> None:
let $tmp@64: None = println "destructor"
let $tmp@64: None = `println <:String>`("destructor")
return ($tmp@64:None)

let mut x: DestructibleClass = DestructibleClass { }
destroy (x:DestructibleClass)
`destroy <:ReferenceMut<DestructibleClass>>`((x:DestructibleClass))
(x:DestructibleClass) = DestructibleClass { }
println "done"
destroy (x:DestructibleClass)
`println <:String>`("done")
`destroy <:ReferenceMut<DestructibleClass>>`((x:DestructibleClass))
6 changes: 3 additions & 3 deletions src/tests/snapshots/ppl__tests__empty_constructor.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ expression: hir
---
type A
let a: A = A { }
println type of (a:A)
`println <:Type<A>>`(`type of <:A>`((a:A)))
==MONOMORPHIZED==
Expand All @@ -15,10 +15,10 @@ fn<A> type of <$arg0: A> -> Type<A>:
fn<A> String from <ty: Type<A>> -> String:
let $tmp@4331: String = clone (ty:Type<A>).name
let $tmp@4331: String = `clone <:Reference<String>>`((ty:Type<A>).name)
return ($tmp@4331:String)
fn println <x: Type<A>> -> None:
let $tmp@176: None = println String from (x:Type<A>)
let $tmp@176: None = `println <:String>`(`String from <:Type<A>>`((x:Type<A>)))
return ($tmp@176:None)
4 changes: 2 additions & 2 deletions src/tests/snapshots/ppl__tests__escaped_id.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,6 @@ source: src/tests/mod.rs
expression: hir
---
let mut if: Integer = 1
destroy (if:Integer)
`destroy <:ReferenceMut<Integer>>`((if:Integer))
(if:Integer) = 2
destroy (if:Integer)
`destroy <:ReferenceMut<Integer>>`((if:Integer))
16 changes: 8 additions & 8 deletions src/tests/snapshots/ppl__tests__generics.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -11,17 +11,17 @@ fn<T> x of <p: Point<T>> -> T:
let $tmp@53: T = (p:Point<T>).x
return ($tmp@53:T)

let x: Integer = x of Point<Integer> { x: 0, y: 0 }
let x: Integer = `x of <:Point<Integer>>`(Point<Integer> { x: 0, y: 0 })

fn<T> id <x: T> -> T:
let $tmp@127: T = (x:T)
return ($tmp@127:T)

println clone (x:Integer) == 0
println id 1 == 1
println id "hello"
id Point<Integer> { x: 0, y: 0 }
destroy (x:Integer)
`println <:Bool>`(`<:Integer> == <:Integer>`(`clone <:Reference<Integer>>`((x:Integer)), 0))
`println <:Bool>`(`<:Integer> == <:Integer>`(`id <:Integer>`(1), 1))
`println <:String>`(`id <:String>`("hello"))
`id <:Point<Integer>>`(Point<Integer> { x: 0, y: 0 })
`destroy <:ReferenceMut<Integer>>`((x:Integer))

==MONOMORPHIZED==

Expand All @@ -40,7 +40,7 @@ fn String from <x: Bool> -> String:


fn println <x: Bool> -> None:
let $tmp@176: None = println String from (x:Bool)
let $tmp@176: None = `println <:String>`(`String from <:Bool>`((x:Bool)))
return ($tmp@176:None)


Expand All @@ -59,7 +59,7 @@ fn String from <x: Bool> -> String:


fn println <x: Bool> -> None:
let $tmp@176: None = println String from (x:Bool)
let $tmp@176: None = `println <:String>`(`String from <:Bool>`((x:Bool)))
return ($tmp@176:None)


Expand Down
8 changes: 4 additions & 4 deletions src/tests/snapshots/ppl__tests__import_all.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ source: src/tests/mod.rs
expression: hir
---
use utils.*
println do nothing
println do something
`println <:None>`(`do nothing`())
`println <:Integer>`(`do something`())

==MONOMORPHIZED==

Expand All @@ -15,7 +15,7 @@ fn String from <$arg0: None> -> String:


fn println <x: None> -> None:
let $tmp@176: None = println String from (x:None)
let $tmp@176: None = `println <:String>`(`String from <:None>`((x:None)))
return ($tmp@176:None)


Expand All @@ -24,5 +24,5 @@ fn println <x: None> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)
32 changes: 16 additions & 16 deletions src/tests/snapshots/ppl__tests__integer.hir.snap
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,14 @@
source: src/tests/mod.rs
expression: hir
---
println 0
println + 1
println - 2
println 2 + 1
println 2 ^ 2
println 5 - 0
println 2 * 3
println 14 / 2
`println <:Integer>`(0)
`println <:Integer>`(`+ <:Integer>`(1))
`println <:Integer>`(`- <:Integer>`(2))
`println <:Integer>`(`<:Integer> + <:Integer>`(2, 1))
`println <:Integer>`(`<:Integer> ^ <:Integer>`(2, 2))
`println <:Integer>`(`<:Integer> - <:Integer>`(5, 0))
`println <:Integer>`(`<:Integer> * <:Integer>`(2, 3))
`println <:Rational>`(`<:Integer> / <:Integer>`(14, 2))

==MONOMORPHIZED==

Expand All @@ -18,7 +18,7 @@ println 14 / 2
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -27,7 +27,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -36,7 +36,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -45,7 +45,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -54,7 +54,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -63,7 +63,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -72,7 +72,7 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Integer> -> String

fn println <x: Integer> -> None:
let $tmp@176: None = println String from (x:Integer)
let $tmp@176: None = `println <:String>`(`String from <:Integer>`((x:Integer)))
return ($tmp@176:None)


Expand All @@ -81,5 +81,5 @@ fn println <x: Integer> -> None:
fn String from <$arg0: Rational> -> String

fn println <x: Rational> -> None:
let $tmp@176: None = println String from (x:Rational)
let $tmp@176: None = `println <:String>`(`String from <:Rational>`((x:Rational)))
return ($tmp@176:None)
Loading

0 comments on commit be137f8

Please sign in to comment.