Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/api-doc-tools.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTianqi Zhang <tianzh@microsoft.com>2021-07-05 05:23:27 +0300
committerTianqi Zhang <tianzh@microsoft.com>2021-07-05 05:23:27 +0300
commita56fc85c75ef42fd3182d7acae044d1a2248db82 (patch)
tree78ed60a5520e76b331b70b67b694b153373b78ca
parentd6971df2b54b3323d33862bf56fb6a87c63b5fef (diff)
try another way
-rw-r--r--monodoc/Monodoc.Ecma/EcmaDesc.cs34
-rw-r--r--monodoc/Monodoc.Ecma/EcmaUrlParser.jay13
-rw-r--r--monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs335
-rw-r--r--monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs12
4 files changed, 202 insertions, 192 deletions
diff --git a/monodoc/Monodoc.Ecma/EcmaDesc.cs b/monodoc/Monodoc.Ecma/EcmaDesc.cs
index 5c04b402..69f6d983 100644
--- a/monodoc/Monodoc.Ecma/EcmaDesc.cs
+++ b/monodoc/Monodoc.Ecma/EcmaDesc.cs
@@ -27,8 +27,7 @@ namespace Monodoc.Ecma
Normal,
Pointer,
Ref,
- Out,
- Nullable
+ Out
}
public enum Format
@@ -47,11 +46,17 @@ namespace Monodoc.Ecma
set;
}
- public Mod ArrayModifier {
+ public bool ArrayIsNullable {
get;
set;
}
+ public bool DescIsNullable
+ {
+ get;
+ set;
+ }
+
public string Namespace {
get;
set;
@@ -251,9 +256,9 @@ namespace Monodoc.Ecma
sb.Append ('+');
NestedType.ConstructCRef (sb, skipLeadingDot: true);
}
- if (DescModifier != Mod.Normal)
+ if (DescIsNullable)
{
- sb.Append(ModToString(DescModifier));
+ sb.Append('?');
}
if (ArrayDimensions != null && ArrayDimensions.Count > 0) {
for (int i = 0; i < ArrayDimensions.Count; i++) {
@@ -262,10 +267,10 @@ namespace Monodoc.Ecma
sb.Append (']');
}
}
- if (ArrayModifier != Mod.Normal)
- {
- sb.Append(ModToString(ArrayModifier));
- }
+ if (ArrayIsNullable)
+ {
+ sb.Append('?');
+ }
if (DescKind == Kind.Type)
return;
@@ -410,14 +415,9 @@ namespace Monodoc.Ecma
return genericArgs != null ? "<" + string.Join (",", genericArgs.Select (t => t.ToString ())) + ">" : string.Empty;
}
- string ModToString (EcmaDesc desc)
- {
- return ModToString(desc.DescModifier);
- }
-
- string ModToString(EcmaDesc.Mod mod)
+ string ModToString(EcmaDesc desc)
{
- switch (mod)
+ switch (desc.DescModifier)
{
case Mod.Pointer:
return "*";
@@ -425,8 +425,6 @@ namespace Monodoc.Ecma
return "&";
case Mod.Out:
return "@";
- case Mod.Nullable:
- return "?";
default:
return string.Empty;
}
diff --git a/monodoc/Monodoc.Ecma/EcmaUrlParser.jay b/monodoc/Monodoc.Ecma/EcmaUrlParser.jay
index 4f15d708..b2fe1e65 100644
--- a/monodoc/Monodoc.Ecma/EcmaUrlParser.jay
+++ b/monodoc/Monodoc.Ecma/EcmaUrlParser.jay
@@ -114,15 +114,15 @@ reduced_type_expression
}
type_expression_suffix
- : opt_generic_type_suffix opt_inner_type_description opt_arg_type_suffix opt_array_definition opt_arg_type_suffix opt_etc {
+ : opt_generic_type_suffix opt_inner_type_description opt_nullable opt_array_definition opt_nullable opt_etc {
bool nestedDescHasEtc = $2 != null && ((EcmaDesc)$2).IsEtc;
EcmaDesc nestedType = (EcmaDesc)$2;
$$ = new EcmaDesc {
GenericTypeArguments = $1 as List<EcmaDesc>,
NestedType = nestedType,
- DescModifier = (EcmaDesc.Mod)$3,
+ DescIsNullable = $3 != null,
ArrayDimensions = SafeReverse ($4 as List<int>),
- ArrayModifier = (EcmaDesc.Mod)$5,
+ ArrayIsNullable = $5 != null,
Etc = $6 != null ? ((Tuple<char, string>)$6).Item1 : nestedDescHasEtc ? nestedType.Etc : (char)0,
EtcFilter = $6 != null ? ((Tuple<char, string>)$6).Item2 : nestedDescHasEtc ? nestedType.EtcFilter : null
};
@@ -145,6 +145,10 @@ generic_type_arg_list
: type_expression { $$ = new List<EcmaDesc> () { (EcmaDesc)$1 }; }
| generic_type_arg_list COMMA type_expression { ((List<EcmaDesc>)$1).Add ((EcmaDesc)$3); $$ = $1; }
+opt_nullable
+ : /* empty */ { $$ = null; }
+ | QUESTION_MARK { $$ = $1; }
+
opt_array_definition
: /* empty */ { $$ = null; }
| OP_ARRAY_OPEN opt_array_definition_list OP_ARRAY_CLOSE opt_array_definition {
@@ -201,14 +205,13 @@ reduced_member_expression
}
arg_type_expression
- : type_expression { var desc = (EcmaDesc)$1; $$ = desc; }
+ : type_expression opt_arg_type_suffix { var desc = (EcmaDesc)$1; desc.DescModifier = (EcmaDesc.Mod)$2; $$ = desc; }
opt_arg_type_suffix
: /* empty */ { $$ = EcmaDesc.Mod.Normal; }
| STAR { $$ = EcmaDesc.Mod.Pointer; }
| REF_ARG { $$ = EcmaDesc.Mod.Ref; }
| OUT_ARG { $$ = EcmaDesc.Mod.Out; }
- | QUESTION_MARK { $$ = EcmaDesc.Mod.Nullable; }
type_expression_list
: /* empty */ { $$ = null; }
diff --git a/monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs b/monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs
index a7c6d344..e8df9419 100644
--- a/monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs
+++ b/monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs
@@ -107,7 +107,7 @@ namespace Monodoc.Ecma
"namespace_expression : dot_expression",
"type_expression : dot_expression type_expression_suffix",
"reduced_type_expression : IDENTIFIER type_expression_suffix",
- "type_expression_suffix : opt_generic_type_suffix opt_inner_type_description opt_arg_type_suffix opt_array_definition opt_arg_type_suffix opt_etc",
+ "type_expression_suffix : opt_generic_type_suffix opt_inner_type_description opt_nullable opt_array_definition opt_nullable opt_etc",
"opt_inner_type_description :",
"opt_inner_type_description : INNER_TYPE_SEPARATOR reduced_type_expression",
"opt_generic_type_suffix :",
@@ -115,6 +115,8 @@ namespace Monodoc.Ecma
"opt_generic_type_suffix : OP_GENERICS_LT generic_type_arg_list OP_GENERICS_GT",
"generic_type_arg_list : type_expression",
"generic_type_arg_list : generic_type_arg_list COMMA type_expression",
+ "opt_nullable :",
+ "opt_nullable : QUESTION_MARK",
"opt_array_definition :",
"opt_array_definition : OP_ARRAY_OPEN opt_array_definition_list OP_ARRAY_CLOSE opt_array_definition",
"opt_array_definition_list :",
@@ -129,12 +131,11 @@ namespace Monodoc.Ecma
"method_expression : type_expression EXPLICIT_IMPL_SEP method_expression",
"reduced_member_expression : IDENTIFIER opt_generic_type_suffix",
"reduced_member_expression : IDENTIFIER opt_generic_type_suffix DOT reduced_member_expression",
- "arg_type_expression : type_expression",
+ "arg_type_expression : type_expression opt_arg_type_suffix",
"opt_arg_type_suffix :",
"opt_arg_type_suffix : STAR",
"opt_arg_type_suffix : REF_ARG",
"opt_arg_type_suffix : OUT_ARG",
- "opt_arg_type_suffix : QUESTION_MARK",
"type_expression_list :",
"type_expression_list : arg_type_expression",
"type_expression_list : arg_type_expression COMMA type_expression_list",
@@ -451,90 +452,91 @@ case 22:
{ yyVal = null; }
break;
case 23:
- case_23();
+#line 150 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = yyVals[0+yyTop]; }
break;
case 24:
-#line 157 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = 1; }
+#line 153 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = null; }
break;
case 25:
-#line 158 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = ((int)yyVals[0+yyTop]) + 1; }
+ case_25();
break;
case 26:
#line 161 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = null; }
+ { yyVal = 1; }
break;
case 27:
#line 162 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = Tuple.Create<char, string> (((string)yyVals[0+yyTop])[0], null); }
+ { yyVal = ((int)yyVals[0+yyTop]) + 1; }
break;
case 28:
-#line 163 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = Tuple.Create<char, string> (((string)yyVals[-2+yyTop])[0], (string)yyVals[0+yyTop]); }
+#line 165 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = null; }
break;
case 29:
-#line 167 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = "*"; }
+#line 166 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = Tuple.Create<char, string> (((string)yyVals[0+yyTop])[0], null); }
break;
case 30:
-#line 168 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = yyVals[0+yyTop]; }
+#line 167 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = Tuple.Create<char, string> (((string)yyVals[-2+yyTop])[0], (string)yyVals[0+yyTop]); }
break;
case 31:
- case_31();
+#line 171 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = "*"; }
break;
case 32:
- case_32();
+#line 172 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = yyVals[0+yyTop]; }
break;
case 33:
case_33();
break;
case 34:
-#line 196 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = (string)yyVals[-1+yyTop] + (yyVals[0+yyTop] == null ? string.Empty : "<" + string.Join (",", ((IEnumerable<EcmaDesc>)yyVals[0+yyTop]).Select (t => t.ToCompleteTypeName ())) + ">"); }
+ case_34();
break;
case 35:
case_35();
break;
case 36:
-#line 204 "Monodoc.Ecma/EcmaUrlParser.jay"
- { var desc = (EcmaDesc)yyVals[0+yyTop]; yyVal = desc; }
+#line 200 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = (string)yyVals[-1+yyTop] + (yyVals[0+yyTop] == null ? string.Empty : "<" + string.Join (",", ((IEnumerable<EcmaDesc>)yyVals[0+yyTop]).Select (t => t.ToCompleteTypeName ())) + ">"); }
break;
case 37:
-#line 207 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = EcmaDesc.Mod.Normal; }
+ case_37();
break;
case 38:
#line 208 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = EcmaDesc.Mod.Pointer; }
+ { var desc = (EcmaDesc)yyVals[-1+yyTop]; desc.DescModifier = (EcmaDesc.Mod)yyVals[0+yyTop]; yyVal = desc; }
break;
case 39:
-#line 209 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = EcmaDesc.Mod.Ref; }
+#line 211 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = EcmaDesc.Mod.Normal; }
break;
case 40:
-#line 210 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = EcmaDesc.Mod.Out; }
+#line 212 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = EcmaDesc.Mod.Pointer; }
break;
case 41:
-#line 211 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = EcmaDesc.Mod.Nullable; }
+#line 213 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = EcmaDesc.Mod.Ref; }
break;
case 42:
#line 214 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = null; }
+ { yyVal = EcmaDesc.Mod.Out; }
break;
case 43:
-#line 215 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = new List<EcmaDesc> () { (EcmaDesc)yyVals[0+yyTop] }; }
+#line 217 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = null; }
break;
case 44:
-#line 216 "Monodoc.Ecma/EcmaUrlParser.jay"
- { ((List<EcmaDesc>)yyVals[0+yyTop]).Add ((EcmaDesc)yyVals[-2+yyTop]); yyVal = yyVals[0+yyTop]; }
+#line 218 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = new List<EcmaDesc> () { (EcmaDesc)yyVals[0+yyTop] }; }
break;
case 45:
- case_45();
+#line 219 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { ((List<EcmaDesc>)yyVals[0+yyTop]).Add ((EcmaDesc)yyVals[-2+yyTop]); yyVal = yyVals[0+yyTop]; }
break;
case 46:
case_46();
@@ -543,26 +545,29 @@ case 47:
case_47();
break;
case 48:
-#line 241 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = yyVals[0+yyTop]; }
+ case_48();
break;
case 49:
#line 244 "Monodoc.Ecma/EcmaUrlParser.jay"
{ yyVal = yyVals[0+yyTop]; }
break;
case 50:
- case_50();
+#line 247 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = yyVals[0+yyTop]; }
break;
case 51:
-#line 254 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = yyVals[0+yyTop]; }
+ case_51();
break;
case 52:
-#line 262 "Monodoc.Ecma/EcmaUrlParser.jay"
- { yyVal = null; }
+#line 257 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = yyVals[0+yyTop]; }
break;
case 53:
-#line 263 "Monodoc.Ecma/EcmaUrlParser.jay"
+#line 265 "Monodoc.Ecma/EcmaUrlParser.jay"
+ { yyVal = null; }
+ break;
+case 54:
+#line 266 "Monodoc.Ecma/EcmaUrlParser.jay"
{ yyVal = yyVals[-1+yyTop]; }
break;
#line default
@@ -629,9 +634,9 @@ void case_14()
yyVal = new EcmaDesc {
GenericTypeArguments = yyVals[-5+yyTop] as List<EcmaDesc>,
NestedType = nestedType,
- DescModifier = (EcmaDesc.Mod)yyVals[-3+yyTop],
+ DescIsNullable = yyVals[-3+yyTop] != null,
ArrayDimensions = SafeReverse (yyVals[-2+yyTop] as List<int>),
- ArrayModifier = (EcmaDesc.Mod)yyVals[-1+yyTop],
+ ArrayIsNullable = yyVals[-1+yyTop] != null,
Etc = yyVals[0+yyTop] != null ? ((Tuple<char, string>)yyVals[0+yyTop]).Item1 : nestedDescHasEtc ? nestedType.Etc : (char)0,
EtcFilter = yyVals[0+yyTop] != null ? ((Tuple<char, string>)yyVals[0+yyTop]).Item2 : nestedDescHasEtc ? nestedType.EtcFilter : null
};
@@ -641,16 +646,16 @@ void case_14()
}
}
-void case_23()
-#line 150 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_25()
+#line 154 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var dims = ((IList<int>)yyVals[0+yyTop]) ?? new List<int> (2);
dims.Add ((int)yyVals[-2+yyTop]);
yyVal = dims;
}
-void case_31()
-#line 171 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_33()
+#line 175 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var desc = yyVals[-4+yyTop] as EcmaDesc;
desc.MemberName = yyVals[-2+yyTop] as string;
@@ -659,8 +664,8 @@ void case_31()
yyVal = desc;
}
-void case_32()
-#line 178 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_34()
+#line 182 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var dotExpr = ((List<string>)yyVals[-2+yyTop]);
yyVal = new EcmaDesc {
@@ -672,24 +677,24 @@ void case_32()
};
}
-void case_33()
-#line 188 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_35()
+#line 192 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var desc = yyVals[-2+yyTop] as EcmaDesc;
desc.ExplicitImplMember = yyVals[0+yyTop] as EcmaDesc;
yyVal = desc;
}
-void case_35()
-#line 197 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_37()
+#line 201 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var existing = yyVals[0+yyTop] as string;
var expr = (string)yyVals[-3+yyTop] + (yyVals[-2+yyTop] == null ? string.Empty : "<" + string.Join (",", ((IEnumerable<EcmaDesc>)yyVals[-2+yyTop]).Select (t => t.ToCompleteTypeName ())) + ">");
yyVal = expr + "." + existing;
}
-void case_45()
-#line 219 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_46()
+#line 222 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var dotExpr = ((List<string>)yyVals[0+yyTop]);
dotExpr.Reverse ();
@@ -701,24 +706,24 @@ void case_45()
};
}
-void case_46()
-#line 229 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_47()
+#line 232 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var desc = yyVals[-2+yyTop] as EcmaDesc;
desc.MemberName = yyVals[0+yyTop] as string;
yyVal = desc;
}
-void case_47()
-#line 234 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_48()
+#line 237 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var desc = yyVals[-2+yyTop] as EcmaDesc;
desc.ExplicitImplMember = yyVals[0+yyTop] as EcmaDesc;
yyVal = desc;
}
-void case_50()
-#line 247 "Monodoc.Ecma/EcmaUrlParser.jay"
+void case_51()
+#line 250 "Monodoc.Ecma/EcmaUrlParser.jay"
{
var desc = yyVals[-1+yyTop] as EcmaDesc;
(desc.ExplicitImplMember ?? desc).MemberArguments = SafeReverse (yyVals[0+yyTop] as List<EcmaDesc>);
@@ -729,86 +734,86 @@ void case_50()
static readonly short [] yyLhs = { -1,
0, 0, 0, 0, 0, 0, 0, 0, 8, 8,
2, 1, 10, 9, 12, 12, 11, 11, 11, 16,
- 16, 14, 14, 17, 17, 15, 15, 15, 18, 18,
- 3, 3, 3, 19, 19, 21, 13, 13, 13, 13,
- 13, 22, 22, 22, 4, 4, 4, 5, 7, 6,
- 23, 20, 20,
+ 16, 13, 13, 14, 14, 17, 17, 15, 15, 15,
+ 18, 18, 3, 3, 3, 19, 19, 21, 22, 22,
+ 22, 22, 23, 23, 23, 4, 4, 4, 5, 7,
+ 6, 24, 20, 20,
};
static readonly short [] yyLen = { 2,
3, 3, 3, 3, 3, 3, 3, 3, 1, 3,
1, 2, 2, 6, 0, 2, 0, 2, 3, 1,
- 3, 0, 4, 0, 2, 0, 2, 4, 1, 1,
- 5, 3, 3, 2, 4, 1, 0, 1, 1, 1,
- 1, 0, 1, 3, 1, 3, 3, 1, 1, 2,
- 1, 0, 3,
+ 3, 0, 1, 0, 4, 0, 2, 0, 2, 4,
+ 1, 1, 5, 3, 3, 2, 4, 2, 0, 1,
+ 1, 1, 0, 1, 3, 1, 3, 3, 1, 1,
+ 2, 1, 0, 3,
};
static readonly short [] yyDefRed = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
- 2, 11, 0, 3, 0, 0, 4, 0, 48, 5,
- 0, 6, 7, 49, 8, 0, 0, 0, 12, 0,
- 0, 0, 0, 0, 0, 0, 51, 50, 10, 20,
- 0, 18, 0, 0, 0, 33, 32, 46, 47, 36,
- 0, 0, 0, 19, 0, 16, 38, 39, 40, 41,
- 0, 0, 0, 53, 21, 13, 0, 0, 31, 44,
- 0, 0, 0, 25, 0, 0, 14, 23, 30, 29,
- 0, 0, 0, 28, 0, 0, 35,
+ 2, 11, 0, 3, 0, 0, 4, 0, 49, 5,
+ 0, 6, 7, 50, 8, 0, 0, 0, 12, 0,
+ 0, 0, 0, 0, 0, 0, 52, 51, 10, 20,
+ 0, 18, 0, 0, 0, 35, 34, 47, 48, 0,
+ 0, 0, 0, 19, 0, 16, 23, 0, 0, 40,
+ 41, 42, 38, 0, 54, 21, 13, 0, 0, 33,
+ 45, 0, 0, 0, 27, 0, 0, 14, 25, 32,
+ 31, 0, 0, 0, 30, 0, 0, 37,
};
protected static readonly short [] yyDgoto = { 9,
23, 21, 24, 27, 30, 32, 35, 20, 39, 66,
- 40, 54, 71, 78, 87, 51, 82, 91, 94, 47,
- 61, 62, 48,
+ 40, 54, 68, 79, 88, 51, 83, 92, 95, 47,
+ 61, 73, 62, 48,
};
- protected static readonly short [] yySindex = { -6,
- -247, -236, -228, -226, -220, -214, -208, -205, 0, -244,
- -244, -244, -244, -244, -244, -244, -244, -202, 0, -259,
- 0, 0, -248, 0, -259, -232, 0, -259, 0, 0,
- -207, 0, 0, 0, 0, -244, -244, -200, 0, -201,
- -193, -244, -230, -191, -244, -244, 0, 0, 0, 0,
- -210, 0, -189, -227, -259, 0, 0, 0, 0, 0,
- -186, -192, -244, 0, -259, 0, 0, 0, 0, 0,
- -190, -207, -244, 0, 0, 0, -184, -227, 0, 0,
- -184, -188, -187, 0, -190, -241, 0, 0, 0, 0,
- -185, -178, -259, 0, -179, -178, 0,
+ protected static readonly short [] yySindex = { -21,
+ -237, -234, -226, -221, -209, -208, -198, -197, 0, -191,
+ -191, -191, -191, -191, -191, -191, -191, -190, 0, -219,
+ 0, 0, -243, 0, -219, -236, 0, -219, 0, 0,
+ -196, 0, 0, 0, 0, -191, -191, -187, 0, -189,
+ -185, -191, -241, -183, -191, -191, 0, 0, 0, 0,
+ -238, 0, -182, -199, -219, 0, 0, 0, 0, -212,
+ -181, -186, -191, 0, -219, 0, 0, -188, -196, 0,
+ 0, 0, 0, -191, 0, 0, 0, -178, -199, 0,
+ 0, -178, -192, -184, 0, -188, -239, 0, 0, 0,
+ 0, -180, -179, -219, 0, -176, -179, 0,
};
protected static readonly short [] yyRindex = { 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 0, 68,
- 0, 0, 0, 0, 83, 0, 0, 100, 0, 0,
- 85, 0, 0, 0, 0, 0, 0, 0, 0, 35,
- 0, 0, 177, 0, 0, -181, 0, 0, 0, 0,
- 0, 0, 0, 194, 4, 0, 0, 0, 0, 0,
- -180, 0, 0, 0, 18, 0, 0, 0, 0, 0,
- 117, 85, -181, 0, 0, 0, -177, 194, 0, 0,
- -177, 0, 134, 0, 117, 0, 0, 0, 0, 0,
- 151, 0, 52, 0, 167, 0, 0,
+ 0, 0, 0, 0, 152, 0, 0, 162, 0, 0,
+ 86, 0, 0, 0, 0, 0, 0, 0, 0, 35,
+ 0, 0, 170, 0, 0, -175, 0, 0, 0, 0,
+ 0, 0, 0, 182, 4, 0, 0, 0, 0, -217,
+ -174, 0, 0, 0, 18, 0, 0, 85, 86, 0,
+ 0, 0, 0, -175, 0, 0, 0, -173, 182, 0,
+ 0, -173, 0, 102, 0, 85, 0, 0, 0, 0,
+ 0, 119, 0, 52, 0, 135, 0, 0,
};
protected static readonly short [] yyGindex = { 0,
- -7, 0, -1, -5, 0, 0, 0, 8, 24, 0,
- -23, 0, 12, 6, 0, 0, 11, 0, -2, -43,
- 0, 22, 0,
+ -8, 0, -11, 5, 0, 0, 0, -2, 23, 0,
+ -25, 0, 10, 6, 0, 0, 8, 0, -1, -27,
+ 0, 0, 21, 0,
};
- protected static readonly short [] yyTable = { 57,
- 9, 43, 19, 17, 37, 26, 38, 26, 26, 31,
- 33, 41, 29, 18, 10, 34, 89, 17, 22, 25,
- 28, 25, 28, 28, 25, 11, 42, 44, 79, 50,
- 90, 72, 53, 12, 15, 13, 46, 26, 60, 59,
- 56, 14, 45, 49, 67, 68, 69, 15, 70, 25,
- 63, 17, 28, 16, 64, 75, 17, 36, 52, 46,
- 5, 53, 7, 4, 55, 60, 58, 17, 65, 95,
- 3, 2, 8, 6, 73, 74, 81, 1, 77, 93,
- 96, 85, 17, 86, 52, 92, 42, 43, 76, 83,
- 88, 84, 24, 97, 80, 0, 0, 0, 0, 45,
+ protected static readonly short [] yyTable = { 43,
+ 9, 19, 29, 17, 26, 34, 26, 26, 22, 25,
+ 28, 25, 28, 28, 25, 57, 41, 17, 90, 31,
+ 33, 53, 63, 44, 10, 46, 64, 11, 50, 69,
+ 56, 42, 91, 49, 15, 12, 26, 60, 45, 25,
+ 13, 80, 28, 39, 37, 5, 38, 7, 4, 59,
+ 39, 17, 14, 15, 76, 3, 2, 8, 6, 70,
+ 71, 72, 1, 16, 17, 60, 18, 17, 96, 36,
+ 46, 52, 55, 53, 58, 65, 67, 86, 94, 74,
+ 78, 75, 82, 97, 24, 53, 87, 77, 84, 85,
+ 93, 89, 43, 44, 81, 98, 26, 0, 0, 0,
+ 0, 28, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 29, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 22, 0, 0, 0,
+ 0, 0, 0, 0, 36, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 26, 0, 0, 0, 0, 0, 0,
+ 0, 17, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 46, 0, 0, 0, 0, 0, 0, 0, 53,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 27, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 34, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 52, 0, 0, 0,
+ 0, 22, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 37, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
@@ -823,41 +828,40 @@ void case_50()
15, 17, 17, 0, 0, 0, 17, 0, 0, 17,
17, 0, 17, 17, 17, 17, 17, 17, 17, 0,
17, 0, 17, 0, 0, 17, 17, 0, 17, 17,
- 17, 17, 17, 17, 0, 17, 0, 0, 0, 17,
- 0, 17, 0, 17, 17, 17, 17, 17, 17, 17,
- 0, 0, 17, 0, 0, 0, 45, 0, 17, 0,
- 17, 17, 17, 17, 17, 17, 22, 22, 0, 0,
- 0, 22, 0, 0, 22, 0, 0, 22, 22, 22,
- 22, 22, 22, 26, 26, 0, 0, 0, 26, 0,
- 0, 26, 26, 0, 0, 26, 26, 26, 26, 26,
- 27, 27, 0, 0, 0, 27, 0, 0, 27, 27,
- 0, 0, 27, 27, 27, 27, 27, 34, 0, 0,
- 0, 34, 0, 0, 34, 34, 15, 34, 34, 34,
- 34, 34, 34, 0, 0, 15, 0, 15, 15, 15,
- 15, 15, 15, 37, 37, 0, 0, 0, 37, 0,
- 0, 37, 37, 0, 37, 0, 0, 0, 37,
+ 17, 17, 0, 17, 24, 24, 0, 0, 0, 24,
+ 0, 0, 24, 0, 0, 24, 24, 24, 24, 24,
+ 24, 28, 28, 0, 0, 0, 28, 0, 0, 28,
+ 28, 0, 0, 28, 28, 28, 28, 28, 29, 29,
+ 0, 0, 0, 29, 0, 0, 29, 29, 0, 0,
+ 29, 29, 29, 29, 29, 36, 0, 0, 0, 36,
+ 0, 0, 36, 36, 0, 36, 36, 36, 36, 36,
+ 36, 17, 0, 0, 17, 0, 0, 0, 17, 0,
+ 17, 17, 17, 0, 17, 0, 17, 17, 46, 15,
+ 17, 0, 17, 0, 0, 0, 17, 17, 15, 0,
+ 15, 22, 22, 0, 15, 15, 22, 0, 0, 22,
+ 22, 0, 22, 22, 22, 22, 22,
};
- protected static readonly short [] yyCheck = { 43,
- 0, 25, 10, 0, 264, 13, 266, 15, 16, 15,
- 16, 260, 14, 258, 262, 17, 258, 0, 11, 12,
- 13, 14, 15, 16, 17, 262, 275, 260, 72, 37,
- 272, 55, 263, 262, 0, 262, 267, 45, 46, 45,
- 42, 262, 275, 36, 272, 273, 274, 262, 276, 42,
- 261, 0, 45, 262, 265, 63, 262, 260, 259, 267,
- 67, 263, 69, 70, 258, 73, 258, 0, 258, 93,
- 77, 78, 79, 80, 261, 268, 261, 84, 269, 258,
- 260, 270, 0, 271, 0, 271, 268, 268, 65, 78,
- 85, 81, 270, 96, 73, -1, -1, -1, -1, 0,
+ protected static readonly short [] yyCheck = { 25,
+ 0, 10, 14, 0, 13, 17, 15, 16, 11, 12,
+ 13, 14, 15, 16, 17, 43, 260, 0, 258, 15,
+ 16, 263, 261, 260, 262, 267, 265, 262, 37, 55,
+ 42, 275, 272, 36, 0, 262, 45, 46, 275, 42,
+ 262, 69, 45, 261, 264, 67, 266, 69, 70, 45,
+ 268, 0, 262, 262, 63, 77, 78, 79, 80, 272,
+ 273, 274, 84, 262, 262, 74, 258, 0, 94, 260,
+ 267, 259, 258, 263, 258, 258, 276, 270, 258, 261,
+ 269, 268, 261, 260, 0, 0, 271, 65, 79, 82,
+ 271, 86, 268, 268, 74, 97, 270, -1, -1, -1,
+ -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, -1, -1, -1, -1, -1, -1, -1, 0, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
+ -1, -1, -1, -1, 0, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
+ -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
+ -1, 0, -1, -1, -1, -1, -1, -1, -1, 0,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- 0, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
- -1, -1, -1, -1, -1, -1, 0, -1, -1, -1,
+ -1, 0, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
- -1, -1, -1, 0, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
@@ -872,22 +876,21 @@ void case_50()
276, 260, 261, -1, -1, -1, 265, -1, -1, 268,
269, -1, 271, 272, 273, 274, 275, 276, 261, -1,
263, -1, 265, -1, -1, 268, 269, -1, 271, 272,
- 273, 274, 260, 276, -1, 263, -1, -1, -1, 267,
- -1, 269, -1, 271, 272, 273, 274, 275, 276, 260,
- -1, -1, 263, -1, -1, -1, 267, -1, 269, -1,
- 271, 272, 273, 274, 275, 276, 260, 261, -1, -1,
- -1, 265, -1, -1, 268, -1, -1, 271, 272, 273,
- 274, 275, 276, 260, 261, -1, -1, -1, 265, -1,
- -1, 268, 269, -1, -1, 272, 273, 274, 275, 276,
- 260, 261, -1, -1, -1, 265, -1, -1, 268, 269,
- -1, -1, 272, 273, 274, 275, 276, 261, -1, -1,
- -1, 265, -1, -1, 268, 269, 260, 271, 272, 273,
- 274, 275, 276, -1, -1, 269, -1, 271, 272, 273,
- 274, 275, 276, 260, 261, -1, -1, -1, 265, -1,
- -1, 268, 269, -1, 271, -1, -1, -1, 275,
+ 273, 274, -1, 276, 260, 261, -1, -1, -1, 265,
+ -1, -1, 268, -1, -1, 271, 272, 273, 274, 275,
+ 276, 260, 261, -1, -1, -1, 265, -1, -1, 268,
+ 269, -1, -1, 272, 273, 274, 275, 276, 260, 261,
+ -1, -1, -1, 265, -1, -1, 268, 269, -1, -1,
+ 272, 273, 274, 275, 276, 261, -1, -1, -1, 265,
+ -1, -1, 268, 269, -1, 271, 272, 273, 274, 275,
+ 276, 260, -1, -1, 263, -1, -1, -1, 267, -1,
+ 269, 260, 271, -1, 263, -1, 275, 276, 267, 260,
+ 269, -1, 271, -1, -1, -1, 275, 276, 269, -1,
+ 271, 260, 261, -1, 275, 276, 265, -1, -1, 268,
+ 269, -1, 271, 272, 273, 274, 275,
};
-#line 265 "Monodoc.Ecma/EcmaUrlParser.jay"
+#line 268 "Monodoc.Ecma/EcmaUrlParser.jay"
}
diff --git a/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs b/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs
index c61c478e..f8a7829c 100644
--- a/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs
+++ b/monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs
@@ -224,7 +224,7 @@ namespace MonoTests.Monodoc.Ecma
{
string stringCref = "T:System.String?";
var desc = parser.Parse(stringCref);
- Assert.AreEqual(EcmaDesc.Mod.Nullable, desc.DescModifier);
+ Assert.IsTrue(desc.DescIsNullable);
string generatedEcmaCref = desc.ToEcmaCref();
Assert.AreEqual(stringCref, generatedEcmaCref);
}
@@ -234,13 +234,19 @@ namespace MonoTests.Monodoc.Ecma
{
string stringCref = "T:System.String?[]";
var desc = parser.Parse(stringCref);
- Assert.AreEqual(EcmaDesc.Mod.Nullable, desc.DescModifier);
+ Assert.IsTrue(desc.DescIsNullable);
string generatedEcmaCref = desc.ToEcmaCref();
Assert.AreEqual(stringCref, generatedEcmaCref);
stringCref = "T:System.String[]?";
desc = parser.Parse(stringCref);
- Assert.AreEqual(EcmaDesc.Mod.Nullable, desc.ArrayModifier);
+ Assert.IsTrue(desc.ArrayIsNullable);
+ generatedEcmaCref = desc.ToEcmaCref();
+ Assert.AreEqual(stringCref, generatedEcmaCref);
+
+ stringCref = "M:System.Net.Sockets.Socket.EndAccept(System.Byte[]&,System.IAsyncResult)";
+ desc = parser.Parse(stringCref);
+ //Assert.AreEqual(EcmaDesc.Mod.Nullable, desc.ArrayModifier);
generatedEcmaCref = desc.ToEcmaCref();
Assert.AreEqual(stringCref, generatedEcmaCref);
}