summaryrefslogtreecommitdiffstats
path: root/llvm/test/tools
diff options
context:
space:
mode:
authorMarek Sokolowski <mnbvmar@gmail.com>2017-09-29 22:25:05 +0000
committerMarek Sokolowski <mnbvmar@gmail.com>2017-09-29 22:25:05 +0000
commit42f494d6a65d0dfe5a62cdf2c15d6e71745237ef (patch)
tree0f35b053337f1ba506c8c7d9fec826f44adb1166 /llvm/test/tools
parent5b9d96825b86fdd4063d03f78cc8fa5db9ba4f2c (diff)
downloadbcm5719-llvm-42f494d6a65d0dfe5a62cdf2c15d6e71745237ef.tar.gz
bcm5719-llvm-42f494d6a65d0dfe5a62cdf2c15d6e71745237ef.zip
[llvm-rc] Serialize MENU resources to .res files (serialization, pt 3).
This allows MENU resources to be serialized. MENU resource statement doc: msdn.microsoft.com/en-us/library/windows/desktop/aa381025.aspx POPUP sub-statement doc: msdn.microsoft.com/en-us/library/windows/desktop/aa381030.aspx MENUITEM sub-statement doc: msdn.microsoft.com/en-us/library/windows/desktop/aa381024.aspx MENUHEADER structure: msdn.microsoft.com/en-us/library/windows/desktop/ms648018.aspx (and NORMALMENUITEM, POPUPMENUITEM structs). Thanks for Nico Weber for his original work in this area. Differential Revision: https://reviews.llvm.org/D37828 llvm-svn: 314562
Diffstat (limited to 'llvm/test/tools')
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tag-menu-bad-menuitem-id.rc3
-rw-r--r--llvm/test/tools/llvm-rc/Inputs/tag-menu.rc60
-rw-r--r--llvm/test/tools/llvm-rc/tag-menu.test75
3 files changed, 138 insertions, 0 deletions
diff --git a/llvm/test/tools/llvm-rc/Inputs/tag-menu-bad-menuitem-id.rc b/llvm/test/tools/llvm-rc/Inputs/tag-menu-bad-menuitem-id.rc
new file mode 100644
index 00000000000..3794442de22
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/tag-menu-bad-menuitem-id.rc
@@ -0,0 +1,3 @@
+1 MENU {
+ MENUITEM "Wrong", 100000, CHECKED
+}
diff --git a/llvm/test/tools/llvm-rc/Inputs/tag-menu.rc b/llvm/test/tools/llvm-rc/Inputs/tag-menu.rc
new file mode 100644
index 00000000000..33ba0d50268
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/Inputs/tag-menu.rc
@@ -0,0 +1,60 @@
+CheckRecursion MENU {
+ POPUP "A" {
+ POPUP "B" {
+ MENUITEM "a", 1
+ MENUITEM "b", 2
+ MENUITEM "c", 3
+ POPUP "C" {
+ POPUP "D" { POPUP "E" { POPUP "F" { POPUP "G" { POPUP "H" { POPUP "I" {
+ MENUITEM "d", 57134
+ }}}}}}
+ }
+ }
+ MENUITEM "efg", 23333
+ }
+}
+
+
+CheckFlags MENU {
+ MENUITEM "a", 1, CHECKED
+ MENUITEM "b", 2, GRAYED
+ MENUITEM "c", 3, HELP
+ MENUITEM "d", 4, INACTIVE
+ MENUITEM "e", 5, MENUBARBREAK
+ MENUITEM "f", 6, MENUBREAK
+ MENUITEM "ad", 7, CHECKED, INACTIVE
+ MENUITEM SEPARATOR
+ POPUP "A", CHECKED { MENUITEM "x", 100 }
+ POPUP "B", GRAYED { MENUITEM "x", 101 }
+ POPUP "C", HELP { MENUITEM "x", 102 }
+ POPUP "D", INACTIVE { MENUITEM "x", 103 }
+ POPUP "E", MENUBARBREAK { MENUITEM "x", 104 }
+ POPUP "F", MENUBREAK { MENUITEM "x", 105 }
+ POPUP "G", HELP, MENUBARBREAK, GRAYED {
+ POPUP "H", CHECKED, MENUBREAK, HELP, INACTIVE {
+ MENUITEM SEPARATOR
+ MENUITEM "x", 106, INACTIVE, MENUBARBREAK
+ MENUITEM SEPARATOR
+ }
+ }
+ MENUITEM "abcdef", 8, help, inactive, menubarbreak, checked, grayed, menubreak
+}
+
+
+CheckOpts MENU
+CHARACTERISTICS 500
+LANGUAGE 1, 1
+VERSION 128
+BEGIN
+ POPUP "&Only separator" {
+ MENUITEM SEPARATOR
+ }
+ POPUP "O&ther things" {
+ MENUITEM "&abcde", 1
+ MENUITEM "a&bcde", 2
+ MENUITEM "ab&cde", 3
+ MENUITEM "abc&de", 4
+ MENUITEM "abcd&e", 5
+ }
+END
+
diff --git a/llvm/test/tools/llvm-rc/tag-menu.test b/llvm/test/tools/llvm-rc/tag-menu.test
new file mode 100644
index 00000000000..0fd513807ee
--- /dev/null
+++ b/llvm/test/tools/llvm-rc/tag-menu.test
@@ -0,0 +1,75 @@
+; RUN: llvm-rc /FO %t %p/Inputs/tag-menu.rc
+; RUN: llvm-readobj %t | FileCheck %s --check-prefix=MENU
+
+; MENU: Resource type (int): 4
+; MENU-NEXT: Resource name (string): CHECKRECURSION
+; MENU-NEXT: Data version: 0
+; MENU-NEXT: Memory flags: 0x1030
+; MENU-NEXT: Language ID: 1033
+; MENU-NEXT: Version (major): 0
+; MENU-NEXT: Version (minor): 0
+; MENU-NEXT: Characteristics: 0
+; MENU-NEXT: Data size: 102
+; MENU-NEXT: Data: (
+; MENU-NEXT: 0000: 00000000 90004100 00001000 42000000 |......A.....B...|
+; MENU-NEXT: 0010: 00000100 61000000 00000200 62000000 |....a.......b...|
+; MENU-NEXT: 0020: 00000300 63000000 90004300 00009000 |....c.....C.....|
+; MENU-NEXT: 0030: 44000000 90004500 00009000 46000000 |D.....E.....F...|
+; MENU-NEXT: 0040: 90004700 00009000 48000000 90004900 |..G.....H.....I.|
+; MENU-NEXT: 0050: 00008000 2EDF6400 00008000 255B6500 |......d.....%[e.|
+; MENU-NEXT: 0060: 66006700 0000 |f.g...|
+; MENU-NEXT: )
+
+; MENU-DAG: Resource type (int): 4
+; MENU-NEXT: Resource name (string): CHECKFLAGS
+; MENU-NEXT: Data version: 0
+; MENU-NEXT: Memory flags: 0x1030
+; MENU-NEXT: Language ID: 1033
+; MENU-NEXT: Version (major): 0
+; MENU-NEXT: Version (minor): 0
+; MENU-NEXT: Characteristics: 0
+; MENU-NEXT: Data size: 202
+; MENU-NEXT: Data: (
+; MENU-NEXT: 0000: 00000000 08000100 61000000 01000200 |........a.......|
+; MENU-NEXT: 0010: 62000000 00400300 63000000 02000400 |b....@..c.......|
+; MENU-NEXT: 0020: 64000000 20000500 65000000 40000600 |d... ...e...@...|
+; MENU-NEXT: 0030: 66000000 0A000700 61006400 00000000 |f.......a.d.....|
+; MENU-NEXT: 0040: 00000000 18004100 00008000 64007800 |......A.....d.x.|
+; MENU-NEXT: 0050: 00001100 42000000 80006500 78000000 |....B.....e.x...|
+; MENU-NEXT: 0060: 10404300 00008000 66007800 00001200 |.@C.....f.x.....|
+; MENU-NEXT: 0070: 44000000 80006700 78000000 30004500 |D.....g.x...0.E.|
+; MENU-NEXT: 0080: 00008000 68007800 00005000 46000000 |....h.x...P.F...|
+; MENU-NEXT: 0090: 80006900 78000000 31404700 0000DA40 |..i.x...1@G....@|
+; MENU-NEXT: 00A0: 48000000 00000000 00002200 6A007800 |H.........".j.x.|
+; MENU-NEXT: 00B0: 00008000 00000000 EB400800 61006200 |.........@..a.b.|
+; MENU-NEXT: 00C0: 63006400 65006600 0000 |c.d.e.f...|
+; MENU-NEXT: )
+
+; MENU-DAG: Resource type (int): 4
+; MENU-NEXT: Resource name (string): CHECKOPTS
+; MENU-NEXT: Data version: 0
+; MENU-NEXT: Memory flags: 0x1030
+; MENU-NEXT: Language ID: 1025
+; MENU-NEXT: Version (major): 0
+; MENU-NEXT: Version (minor): 128
+; MENU-NEXT: Characteristics: 500
+; MENU-NEXT: Data size: 164
+; MENU-NEXT: Data: (
+; MENU-NEXT: 0000: 00000000 10002600 4F006E00 6C007900 |......&.O.n.l.y.|
+; MENU-NEXT: 0010: 20007300 65007000 61007200 61007400 | .s.e.p.a.r.a.t.|
+; MENU-NEXT: 0020: 6F007200 00008000 00000000 90004F00 |o.r...........O.|
+; MENU-NEXT: 0030: 26007400 68006500 72002000 74006800 |&.t.h.e.r. .t.h.|
+; MENU-NEXT: 0040: 69006E00 67007300 00000000 01002600 |i.n.g.s.......&.|
+; MENU-NEXT: 0050: 61006200 63006400 65000000 00000200 |a.b.c.d.e.......|
+; MENU-NEXT: 0060: 61002600 62006300 64006500 00000000 |a.&.b.c.d.e.....|
+; MENU-NEXT: 0070: 03006100 62002600 63006400 65000000 |..a.b.&.c.d.e...|
+; MENU-NEXT: 0080: 00000400 61006200 63002600 64006500 |....a.b.c.&.d.e.|
+; MENU-NEXT: 0090: 00008000 05006100 62006300 64002600 |......a.b.c.d.&.|
+; MENU-NEXT: 00A0: 65000000 |e...|
+; MENU-NEXT: )
+
+
+; RUN: not llvm-rc /FO %t %p/Inputs/tag-menu-bad-menuitem-id.rc 2>&1 | FileCheck %s --check-prefix BADID
+
+; BADID: llvm-rc: Error in MENU statement (ID 1):
+; BADID-NEXT: MENUITEM action ID (100000) does not fit in 16 bits.
OpenPOWER on IntegriCloud