diff options
author | Miguel de Icaza <miguel@gnome.org> | 2018-05-03 21:22:15 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-03 21:22:15 +0300 |
commit | 8a07116020f64268eacbee8622511387be43adbe (patch) | |
tree | 25ecb8963b1f12ade3191a472b6c467759630d15 | |
parent | a920e7cdb6c5608a0c92c59fd8212f5bfc91b473 (diff) |
[ilasm] Add support for assembling vbbyrefstr, fixes https://github.com/mono/mono/issues/8447 (#8467)
-rw-r--r-- | mcs/ilasm/parser/ILParser.jay | 5 | ||||
-rw-r--r-- | mcs/ilasm/scanner/ILTables.cs | 1 | ||||
-rw-r--r-- | mcs/ilasm/tests/test-marshal.il | 5 |
3 files changed, 11 insertions, 0 deletions
diff --git a/mcs/ilasm/parser/ILParser.jay b/mcs/ilasm/parser/ILParser.jay index b564427b568..bfaa1aa39a6 100644 --- a/mcs/ilasm/parser/ILParser.jay +++ b/mcs/ilasm/parser/ILParser.jay @@ -390,6 +390,7 @@ namespace Mono.ILASM { %token K_LPSTR
%token K_LPWSTR
%token K_LPTSTR
+%token K_VBBYREFSTR
%token K_OBJECTREF
%token K_IUNKNOWN
%token K_IDISPATCH
@@ -1318,6 +1319,10 @@ native_type : /* EMPTY */ {
$$ = NativeType.LPTStr;
}
+ | K_VBBYREFSTR
+ {
+ $$ = NativeType.ByValStr;
+ }
| K_OBJECTREF
| K_IUNKNOWN
{
diff --git a/mcs/ilasm/scanner/ILTables.cs b/mcs/ilasm/scanner/ILTables.cs index 9e62ebf638c..d9bc4a35b85 100644 --- a/mcs/ilasm/scanner/ILTables.cs +++ b/mcs/ilasm/scanner/ILTables.cs @@ -224,6 +224,7 @@ namespace Mono.ILASM { keywords ["lpstr"] = new ILToken (Token.K_LPSTR, "lpstr");
keywords ["lpwstr"] = new ILToken (Token.K_LPWSTR, "lpwstr");
keywords ["lptstr"] = new ILToken (Token.K_LPTSTR, "lptstr");
+ keywords ["vbbyrefstr"] = new ILToken (Token.K_VBBYREFSTR, "vbbyrefstr");
keywords ["objectref"] = new ILToken (Token.K_OBJECTREF, "objectref");
keywords ["iunknown"] = new ILToken (Token.K_IUNKNOWN, "iunknown");
keywords ["idispatch"] = new ILToken (Token.K_IDISPATCH, "idispatch");
diff --git a/mcs/ilasm/tests/test-marshal.il b/mcs/ilasm/tests/test-marshal.il index 2325c4b8fbf..c8ca283157d 100644 --- a/mcs/ilasm/tests/test-marshal.il +++ b/mcs/ilasm/tests/test-marshal.il @@ -33,5 +33,10 @@ IL_0000: ret } + .method public static hidebysig pinvokeimpl ("foo" as "foo" winapi ) + default void foo (string marshal (vbbyrefstr) s) cil managed preservesig + { + } // end of method C::foo + } |