Skip to content

embedding — examples

← all topics · 20 examples · page 1 of 1 · raw source ↓

Runs `test` → 99

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Added_OuterFieldShadowsPromoted   topic: embedding   status: verified
// verified behavior: Test.test(...) == 99

namespace Test

data Base { tag: int }
data Wrap { Base, tag: int }

func test() -> int {
    let w = Wrap { Base: Base { tag: 1 }, tag: 99 }
    return w.tag
}

Runs `test` → 42

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Added_PointerEmbed_NewConstruction   topic: embedding   status: verified
// verified behavior: Test.test(...) == 42

namespace Test

data Vec2 { var x: int, var y: int }
data Entity { *Vec2, name: string }

func test() -> int {
    var e = new Entity { Vec2: new Vec2 { x: 10, y: 20 }, name: "p" }
    e.x += 12
    return e.x + e.y
}

Runs `test` → 7

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Added_ValueEmbed_DirectAccessByName   topic: embedding   status: verified
// verified behavior: Test.test(...) == 7

namespace Test

data Vec2 { var x: int, var y: int }
data Transform { Vec2, var scale: int }

func test() -> int {
    let t = Transform { x: 7, y: 0, scale: 1 }
    let v = t.Vec2
    return v.x
}

Runs `test` → 35

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Added_ValueEmbed_PromotedField   topic: embedding   status: verified
// verified behavior: Test.test(...) == 35

namespace Test

data Vec2 { var x: int, var y: int }
data Transform { Vec2, var scale: int }

func test() -> int {
    var t = Transform { x: 10, y: 20, scale: 2 }
    t.x += 5
    return t.x + t.y    // 15 + 20
}

Runs `test` → 25

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Added_ValueEmbed_PromotedMethod   topic: embedding   status: verified
// verified behavior: Test.test(...) == 25

namespace Test

data Vec2 { var x: int, var y: int }
func magnitude(v: Vec2) -> int = v.x * v.x + v.y * v.y
data Transform { Vec2, var scale: int }

func test() -> int {
    let t = Transform { x: 3, y: 4, scale: 1 }
    return t.magnitude()
}

Runs `test` → 42

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::Embedded_Field_Read_Returns_Inner_Value   topic: embedding   status: verified
// verified behavior: Test.test(...) == 42

namespace Test

data Inner { value: int }

data Outer {
    pub Inner
}

func test() -> int {
    let o = Outer { Inner: Inner { value: 42 } }
    return o.value
}

Compiles

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::PointerEmbed_FieldExists   topic: embedding   status: verified
// compiles cleanly (no auto-run claim was extracted)

namespace Test

data Base {
    var x: int
    var y: int
}

data WidgetRef {
    *Base
    label: string
}

func getLabel() -> string {
    var w = WidgetRef { Base: new Base { x: 10, y: 20 }, label: "hello" }
    return w.label
}

Runs `isNotNil` → true

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::PointerEmbed_NilCheck   topic: embedding   status: verified
// verified behavior: Test.isNotNil(...) == true

namespace Test

data Inner {
    var x: int
}

data Outer {
    *Inner
    tag: int
}

func isNil() -> bool {
    var o = Outer { tag: 1 }
    return o.Inner == nil
}

func isNotNil() -> bool {
    var o = Outer { Inner: new Inner { x: 42 }, tag: 1 }
    return o.Inner != nil
}

Runs `getX` → 42

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::PointerEmbed_PromotedFieldRead   topic: embedding   status: verified
// verified behavior: Test.getX(...) == 42

namespace Test

data Base {
    var x: int
    var y: int
}

data WidgetRef {
    *Base
    label: string
}

func getX() -> int {
    var w = WidgetRef { Base: new Base { x: 42, y: 7 }, label: "test" }
    return w.x
}

Runs `mutateX` → 99

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::PointerEmbed_PromotedFieldWrite   topic: embedding   status: verified
// verified behavior: Test.mutateX(...) == 99

namespace Test

data Base {
    var x: int
    var y: int
}

data WidgetRef {
    *Base
    label: string
}

func mutateX() -> int {
    var w = WidgetRef { Base: new Base { x: 10, y: 20 }, label: "test" }
    w.x = 99
    return w.x
}

Runs `addToX` → 15

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_CompoundAssignment   topic: embedding   status: verified
// verified behavior: Test.addToX(...) == 15

namespace Test

data Base {
    var x: int
}

data Wrapper {
    Base
    tag: int
}

func addToX() -> int {
    var w = Wrapper { x: 10, tag: 1 }
    w.x += 5
    return w.x
}

Runs `getBaseY` → 20

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_DirectFieldAccess   topic: embedding   status: verified
// verified behavior: Test.getBaseY(...) == 20

namespace Test

data Base {
    var x: int
    var y: int
}

data Widget {
    Base
    label: string
}

func getBaseY() -> int {
    var w = Widget { x: 10, y: 20, label: "test" }
    return w.Base.y
}

Compiles

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_FieldExists   topic: embedding   status: verified
// compiles cleanly (no auto-run claim was extracted)

namespace Test

data Base {
    var x: int
    var y: int
}

data Widget {
    Base
    label: string
}

func getLabel() -> string {
    var w = Widget { x: 10, y: 20, label: "hello" }
    return w.label
}

Runs `getX` → 42

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_InRefData   topic: embedding   status: verified
// verified behavior: Test.getX(...) == 42

namespace Test

data Vec2 {
    var x: int
    var y: int
}

ref data Entity {
    Vec2
    name: string
}

func getX() -> int {
    var e = Entity()
    e.x = 42
    return e.x
}

Runs `checkPlayer` → 88

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_MixedFields   topic: embedding   status: verified
// verified behavior: Test.checkPlayer(...) == 88

namespace Test

data Position {
    var x: int
    var y: int
}

data Player {
    Position
    name: string
    var health: int
}

func checkPlayer() -> int {
    var p = Player { x: 5, y: 10, name: "hero", health: 100 }
    p.x += 3
    p.health -= 20
    return p.x + p.health
}

Runs `moveAndGet` → 15

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_MutatingMethodCall   topic: embedding   status: verified
// verified behavior: Test.moveAndGet(...) == 15

namespace Test

data Vec2 {
    var x: int
    var y: int

    func addTo(dx: int, dy: int) {
        self.x += dx
        self.y += dy
    }
}

data Entity {
    Vec2
    name: string
}

func moveAndGet() -> int {
    var e = Entity { x: 10, y: 20, name: "test" }
    e.addTo(5, 3)
    return e.x
}

Runs `getQuad` → 20

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_OuterCallsPromoted   topic: embedding   status: verified
// verified behavior: Test.getQuad(...) == 20

namespace Test

data Base {
    var value: int

    func doubled() -> int {
        return self.value * 2
    }
}

data Wrapper {
    Base

    func quadrupled() -> int {
        return self.doubled() * 2
    }
}

func getQuad() -> int {
    var w = Wrapper { value: 5 }
    return w.quadrupled()
}

Runs `getY` → 7

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_PromotedFieldRead   topic: embedding   status: verified
// verified behavior: Test.getY(...) == 7

namespace Test

data Base {
    var x: int
    var y: int
}

data Widget {
    Base
    label: string
}

func getX() -> int {
    var w = Widget { x: 42, y: 7, label: "test" }
    return w.x
}

func getY() -> int {
    var w = Widget { x: 42, y: 7, label: "test" }
    return w.y
}

Runs `mutateX` → 99

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_PromotedFieldWrite   topic: embedding   status: verified
// verified behavior: Test.mutateX(...) == 99

namespace Test

data Base {
    var x: int
    var y: int
}

data Widget {
    Base
    label: string
}

func mutateX() -> int {
    var w = Widget { x: 10, y: 20, label: "test" }
    w.x = 99
    return w.x
}

Runs `getSum` → 30

// E# — a verified example from the E# language corpus (CLR language; .es, not ECMAScript).
// provenance: ILEmitterTests_Embedding.cs::ValueEmbed_PromotedMethodCall   topic: embedding   status: verified
// verified behavior: Test.getSum(...) == 30

namespace Test

data Vec2 {
    var x: int
    var y: int

    func sum() -> int {
        return self.x + self.y
    }
}

data Entity {
    Vec2
    name: string
}

func getSum() -> int {
    var e = Entity { x: 10, y: 20, name: "test" }
    return e.sum()
}