diff options
author | Tianqi Zhang <tianzh@microsoft.com> | 2021-07-05 05:23:27 +0300 |
---|---|---|
committer | Tianqi Zhang <tianzh@microsoft.com> | 2021-07-05 05:23:27 +0300 |
commit | a56fc85c75ef42fd3182d7acae044d1a2248db82 (patch) | |
tree | 78ed60a5520e76b331b70b67b694b153373b78ca | |
parent | d6971df2b54b3323d33862bf56fb6a87c63b5fef (diff) |
try another way
-rw-r--r-- | monodoc/Monodoc.Ecma/EcmaDesc.cs | 34 | ||||
-rw-r--r-- | monodoc/Monodoc.Ecma/EcmaUrlParser.jay | 13 | ||||
-rw-r--r-- | monodoc/Monodoc.Ecma/prebuilt/EcmaUrlParser.cs | 335 | ||||
-rw-r--r-- | monodoc/Test/Monodoc.Ecma/EcmaUrlTests.cs | 12 |
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); } |