// RUN: %target-swift-frontend %s -emit-ir -g -o - | %FileCheck %s

protocol PointUtils {
  func distanceFromOrigin() -> Float
}
// CHECK: define {{.*}}float @_T08protocol{{.*}}FTW({{.*}} !dbg !{{[0-9]+}}

class Point : PointUtils {
    var x : Float
    var y : Float
    init (_x : Float, _y : Float) {
        x = _x
        y = _y
    }

    func distanceFromOrigin() -> Float {
        return 1.0
    }

}

// CHECK: define hidden {{.*}}i64 @_T08protocol4mains5Int64VyF() {{.*}} {
func main() -> Int64 {
    var pt = Point(_x: 2.5, _y: 4.25)
// CHECK: [[LOC2D:%[a-zA-Z0-9]+]] = alloca %T8protocol10PointUtilsP, align {{(4|8)}}
// CHECK: call void @llvm.dbg.declare(metadata {{.*}} [[LOC2D]], metadata ![[LOC:.*]], metadata !DIExpression())
    var loc2d : PointUtils = pt
    var distance = loc2d.distanceFromOrigin()

    return 0
}

// Self should be artificial.
// CHECK: !DILocalVariable(name: "self", arg: 1{{.*}} line: 16
// CHECK-SAME:             DIFlagArtificial

// CHECK: ![[LOC]] = !DILocalVariable(name: "loc2d",{{.*}} line: [[@LINE-10]]

main()

