about summary refs log tree commit diff
path: root/src/test/debuginfo
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2022-05-29 00:40:45 +0000
committerbors <bors@rust-lang.org>2022-05-29 00:40:45 +0000
commit84288ed6d5307ed44a0f78e2f1ee55fbadf4e978 (patch)
tree5e504b24b4dab730b988db1166990259ba328c1e /src/test/debuginfo
parent14f477e78adb9960f760e9bac812673f993d8dc2 (diff)
parent774d7ced10b30c480c63a8124f38bcf2f3d66464 (diff)
downloadrust-84288ed6d5307ed44a0f78e2f1ee55fbadf4e978.tar.gz
rust-84288ed6d5307ed44a0f78e2f1ee55fbadf4e978.zip
Auto merge of #97500 - GuillaumeGomez:rollup-ms1bvps, r=GuillaumeGomez
Rollup of 5 pull requests

Successful merges:

 - #96950 (Add regression test for #96395)
 - #97028 (Add support for embedding pretty printers via `#[debugger_visualizer]` attribute)
 - #97478 (Remove FIXME on `ExtCtxt::fn_decl()`)
 - #97479 (Make some tests check-pass)
 - #97482 (ptr::invalid is not equivalent to a int2ptr cast)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
Diffstat (limited to 'src/test/debuginfo')
-rw-r--r--src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis10
-rw-r--r--src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py23
-rw-r--r--src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs19
-rw-r--r--src/test/debuginfo/embedded-visualizer-point.natvis (renamed from src/test/debuginfo/msvc-embedded-natvis.natvis)10
-rw-r--r--src/test/debuginfo/embedded-visualizer-point.py23
-rw-r--r--src/test/debuginfo/embedded-visualizer.natvis10
-rw-r--r--src/test/debuginfo/embedded-visualizer.py23
-rw-r--r--src/test/debuginfo/embedded-visualizer.rs112
-rw-r--r--src/test/debuginfo/msvc-embedded-natvis.rs64
9 files changed, 221 insertions, 73 deletions
diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis
new file mode 100644
index 00000000000..5900fcc01a6
--- /dev/null
+++ b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.natvis
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+  <Type Name="dependency_with_embedded_visualizers::Person">
+    <DisplayString>{name} is {age} years old.</DisplayString>
+    <Expand>
+      <Item Name="[name]">name</Item>
+      <Item Name="[age]">age</Item>
+    </Expand>
+  </Type>
+</AutoVisualizer>
diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py
new file mode 100644
index 00000000000..2635ed487c8
--- /dev/null
+++ b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.py
@@ -0,0 +1,23 @@
+import gdb
+
+class PersonPrinter:
+    "Print a Person"
+
+    def __init__(self, val):
+        self.val = val
+        self.name = val["name"]
+        self.age = int(val["age"])
+
+    def to_string(self):
+        return "{} is {} years old.".format(self.name, self.age)
+
+def lookup(val):
+    lookup_tag = val.type.tag
+    if lookup_tag is None:
+        return None
+    if "dependency_with_embedded_visualizers::Person" == lookup_tag:
+        return PersonPrinter(val)
+
+    return None
+
+gdb.current_objfile().pretty_printers.append(lookup)
diff --git a/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs
new file mode 100644
index 00000000000..327515b10af
--- /dev/null
+++ b/src/test/debuginfo/auxiliary/dependency-with-embedded-visualizers.rs
@@ -0,0 +1,19 @@
+// compile-flags:-g
+// ignore-lldb
+// no-prefer-dynamic
+
+#![feature(debugger_visualizer)]
+#![debugger_visualizer(natvis_file = "dependency-with-embedded-visualizers.natvis")]
+#![debugger_visualizer(gdb_script_file = "dependency-with-embedded-visualizers.py")]
+#![crate_type = "rlib"]
+
+pub struct Person {
+    name: String,
+    age: i32,
+}
+
+impl Person {
+    pub fn new(name: String, age: i32) -> Person {
+        Person { name: name, age: age }
+    }
+}
diff --git a/src/test/debuginfo/msvc-embedded-natvis.natvis b/src/test/debuginfo/embedded-visualizer-point.natvis
index 201d014b520..d7bf6885dd4 100644
--- a/src/test/debuginfo/msvc-embedded-natvis.natvis
+++ b/src/test/debuginfo/embedded-visualizer-point.natvis
@@ -1,18 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>
 <AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
-  <Type Name="msvc_embedded_natvis::Point">
+  <Type Name="embedded_visualizer::point::Point">
     <DisplayString>({x}, {y})</DisplayString>
     <Expand>
       <Item Name="[x]">x</Item>
       <Item Name="[y]">y</Item>
     </Expand>
   </Type>
-
-  <Type Name="msvc_embedded_natvis::Line">
-    <DisplayString>({a}, {b})</DisplayString>
-    <Expand>
-      <Item Name="[a]">a</Item>
-      <Item Name="[b]">b</Item>
-    </Expand>
-  </Type>
 </AutoVisualizer>
diff --git a/src/test/debuginfo/embedded-visualizer-point.py b/src/test/debuginfo/embedded-visualizer-point.py
new file mode 100644
index 00000000000..d6b1af00785
--- /dev/null
+++ b/src/test/debuginfo/embedded-visualizer-point.py
@@ -0,0 +1,23 @@
+import gdb
+
+class PointPrinter:
+    "Print a Point"
+
+    def __init__(self, val):
+        self.val = val
+        self.x = int(val["x"])
+        self.y = int(val["y"])
+
+    def to_string(self):
+        return "({}, {})".format(self.x, self.y)
+
+def lookup(val):
+    lookup_tag = val.type.tag
+    if lookup_tag is None:
+        return None
+    if "embedded_visualizer::point::Point" == lookup_tag:
+        return PointPrinter(val)
+
+    return None
+
+gdb.current_objfile().pretty_printers.append(lookup)
diff --git a/src/test/debuginfo/embedded-visualizer.natvis b/src/test/debuginfo/embedded-visualizer.natvis
new file mode 100644
index 00000000000..100437f90e5
--- /dev/null
+++ b/src/test/debuginfo/embedded-visualizer.natvis
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
+  <Type Name="embedded_visualizer::Line">
+    <DisplayString>({a}, {b})</DisplayString>
+    <Expand>
+      <Item Name="[a]">a</Item>
+      <Item Name="[b]">b</Item>
+    </Expand>
+  </Type>
+</AutoVisualizer>
diff --git a/src/test/debuginfo/embedded-visualizer.py b/src/test/debuginfo/embedded-visualizer.py
new file mode 100644
index 00000000000..8e4fab61614
--- /dev/null
+++ b/src/test/debuginfo/embedded-visualizer.py
@@ -0,0 +1,23 @@
+import gdb
+
+class LinePrinter:
+    "Print a Line"
+
+    def __init__(self, val):
+        self.val = val
+        self.a = val["a"]
+        self.b = val["b"]
+
+    def to_string(self):
+        return "({}, {})".format(self.a, self.b)
+
+def lookup(val):
+    lookup_tag = val.type.tag
+    if lookup_tag is None:
+        return None
+    if "embedded_visualizer::Line" == lookup_tag:
+        return LinePrinter(val)
+
+    return None
+
+gdb.current_objfile().pretty_printers.append(lookup)
diff --git a/src/test/debuginfo/embedded-visualizer.rs b/src/test/debuginfo/embedded-visualizer.rs
new file mode 100644
index 00000000000..0269015b466
--- /dev/null
+++ b/src/test/debuginfo/embedded-visualizer.rs
@@ -0,0 +1,112 @@
+// compile-flags:-g
+// min-gdb-version: 8.1
+// ignore-lldb
+
+// === CDB TESTS ==================================================================================
+
+// cdb-command: g
+
+// The .nvlist command in cdb does not always have a deterministic output
+// for the order that NatVis files are displayed.
+
+// cdb-command: .nvlist
+// cdb-check:    [...].exe (embedded NatVis "[...]embedded_visualizer-0.natvis")
+
+// cdb-command: .nvlist
+// cdb-check:    [...].exe (embedded NatVis "[...]embedded_visualizer-1.natvis")
+
+// cdb-command: .nvlist
+// cdb-check:    [...].exe (embedded NatVis "[...]embedded_visualizer-2.natvis")
+
+// cdb-command: dx point_a
+// cdb-check:point_a          : (0, 0) [Type: embedded_visualizer::point::Point]
+// cdb-check:    [<Raw View>]     [Type: embedded_visualizer::point::Point]
+// cdb-check:    [x]              : 0 [Type: int]
+// cdb-check:    [y]              : 0 [Type: int]
+
+// cdb-command: dx point_b
+// cdb-check:point_b          : (5, 8) [Type: embedded_visualizer::point::Point]
+// cdb-check:    [<Raw View>]     [Type: embedded_visualizer::point::Point]
+// cdb-check:    [x]              : 5 [Type: int]
+// cdb-check:    [y]              : 8 [Type: int]
+
+// cdb-command: dx line
+// cdb-check:line             : ((0, 0), (5, 8)) [Type: embedded_visualizer::Line]
+// cdb-check:    [<Raw View>]     [Type: embedded_visualizer::Line]
+// cdb-check:    [a]              : (0, 0) [Type: embedded_visualizer::point::Point]
+// cdb-check:    [b]              : (5, 8) [Type: embedded_visualizer::point::Point]
+
+// cdb-command: dx person
+// cdb-check:person           : "Person A" is 10 years old. [Type: dependency_with_embedded_visualizers::Person]
+// cdb-check:    [<Raw View>]     [Type: dependency_with_embedded_visualizers::Person]
+// cdb-check:    [name]           : "Person A" [Type: alloc::string::String]
+// cdb-check:    [age]            : 10 [Type: int]
+
+// === GDB TESTS ===================================================================================
+
+// gdb-command: run
+
+// gdb-command: info auto-load python-scripts
+// gdb-check:Yes     pretty-printer-embedded_visualizer-0
+// gdb-check:Yes     pretty-printer-embedded_visualizer-1
+// gdb-command: print point_a
+// gdb-check:$1 = (0, 0)
+// gdb-command: print point_b
+// gdb-check:$2 = (5, 8)
+// gdb-command: print line
+// gdb-check:$3 = ((0, 0), (5, 8))
+// gdb-command: print person
+// gdb-check:$4 = "Person A" is 10 years old.
+
+#![allow(unused_variables)]
+#![feature(debugger_visualizer)]
+#![debugger_visualizer(natvis_file = "embedded-visualizer.natvis")]
+#![debugger_visualizer(gdb_script_file = "embedded-visualizer.py")]
+
+// aux-build: dependency-with-embedded-visualizers.rs
+extern crate dependency_with_embedded_visualizers;
+
+use dependency_with_embedded_visualizers::Person;
+
+#[debugger_visualizer(natvis_file = "embedded-visualizer-point.natvis")]
+#[debugger_visualizer(gdb_script_file = "embedded-visualizer-point.py")]
+mod point {
+    pub struct Point {
+        x: i32,
+        y: i32,
+    }
+
+    impl Point {
+        pub fn new(x: i32, y: i32) -> Point {
+            Point { x: x, y: y }
+        }
+    }
+}
+
+use point::Point;
+
+pub struct Line {
+    a: Point,
+    b: Point,
+}
+
+impl Line {
+    pub fn new(a: Point, b: Point) -> Line {
+        Line { a: a, b: b }
+    }
+}
+
+fn main() {
+    let point_a = Point::new(0, 0);
+    let point_b = Point::new(5, 8);
+    let line = Line::new(point_a, point_b);
+
+    let name = String::from("Person A");
+    let person = Person::new(name, 10);
+
+    zzz(); // #break
+}
+
+fn zzz() {
+    ()
+}
diff --git a/src/test/debuginfo/msvc-embedded-natvis.rs b/src/test/debuginfo/msvc-embedded-natvis.rs
deleted file mode 100644
index f714fb2ad17..00000000000
--- a/src/test/debuginfo/msvc-embedded-natvis.rs
+++ /dev/null
@@ -1,64 +0,0 @@
-// only-cdb
-// compile-flags:-g
-
-// === CDB TESTS ==================================================================================
-
-// cdb-command: g
-
-// cdb-command: .nvlist
-// cdb-check:    [...].exe (embedded NatVis "[...]msvc_embedded_natvis-0.natvis")
-
-// cdb-command: dx point_a
-// cdb-check:point_a          : (0, 0) [Type: msvc_embedded_natvis::Point]
-// cdb-check:    [<Raw View>]     [Type: msvc_embedded_natvis::Point]
-// cdb-check:    [x]              : 0 [Type: int]
-// cdb-check:    [y]              : 0 [Type: int]
-
-// cdb-command: dx point_b
-// cdb-check:point_b          : (5, 8) [Type: msvc_embedded_natvis::Point]
-// cdb-check:    [<Raw View>]     [Type: msvc_embedded_natvis::Point]
-// cdb-check:    [x]              : 5 [Type: int]
-// cdb-check:    [y]              : 8 [Type: int]
-
-// cdb-command: dx line
-// cdb-check:line             : ((0, 0), (5, 8)) [Type: msvc_embedded_natvis::Line]
-// cdb-check:    [<Raw View>]     [Type: msvc_embedded_natvis::Line]
-// cdb-check:    [a]              : (0, 0) [Type: msvc_embedded_natvis::Point]
-// cdb-check:    [b]              : (5, 8) [Type: msvc_embedded_natvis::Point]
-
-#![feature(debugger_visualizer)]
-#![debugger_visualizer(natvis_file = "msvc-embedded-natvis.natvis")]
-
-pub struct Point {
-    x: i32,
-    y: i32,
-}
-
-impl Point {
-    pub fn new(x: i32, y: i32) -> Point {
-        Point { x: x, y: y }
-    }
-}
-
-pub struct Line {
-    a: Point,
-    b: Point,
-}
-
-impl Line {
-    pub fn new(a: Point, b: Point) -> Line {
-        Line { a: a, b: b }
-    }
-}
-
-fn main() {
-    let point_a = Point::new(0, 0);
-    let point_b = Point::new(5, 8);
-    let line = Line::new(point_a, point_b);
-
-    zzz(); // #break
-}
-
-fn zzz() {
-    ()
-}