public override void VisitLiteralExpression(LiteralExpression literalExpression)
 {
     switch (literalExpression.Value) {
     case "NoMac":
     case "NoMacAttribute":
         VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.MacOSX");
         break;
     case "NoiOS":
     case "NoiOSAttribute":
         VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.iOS");
         break;
     case "NoWatch":
     case "NoWatchAttribute":
         VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.WatchOS");
         break;
     case "NoTV":
     case "NoTVAttribute":
         VisitShorthandUnavailableAttribute (literalExpression, "PlatformName.TvOS");
         break;
     case "Lion":
     case "LionAttribute":
         VisitMacNamedIntroducedAttribute (literalExpression, "7");
         break;
     case "MountainLion":
     case "MountainLionAttribute":
         VisitMacNamedIntroducedAttribute (literalExpression, "8");
         break;
     case "Mavericks":
     case "MavericksAttribute":
         VisitMacNamedIntroducedAttribute (literalExpression, "9");
         break;
     default:
         base.VisitLiteralExpression (literalExpression);
         break;
     }
 }
示例#2
0
 public void VisitLiteralExpression(LiteralExpression literalExpression)
 {
     writer.Write (literalExpression.Value);
 }
            public override void VisitLiteralExpression(LiteralExpression literalExpression)
            {
                var parts = literalExpression?.Value?.Split ('_');
                if (parts == null || parts.Length < 2)
                    return;

                string platformName;
                switch (parts [0]) {
                case "Platform.Mac":
                    platformName = "PlatformName.MacOSX";
                    break;
                case "Platform.iOS":
                    platformName = "PlatformName.iOS";
                    break;
                default:
                    return;
                }

                if (currentAvailability == null) {
                    switch (originalArgIndex) {
                    case 0:
                        currentAvailability = "Introduced";
                        break;
                    case 1:
                        currentAvailability = "Deprecated";
                        break;
                    case 2:
                        currentAvailability = "Obsoleted";
                        break;
                    case 3:
                        currentAvailability = "Unavailable";
                        break;
                    }
                }

                var attr = new InvocationExpression (currentAvailability);
                attr.AddArgument (new LiteralExpression (platformName));

                if (parts.Length == 2) {
                    switch (parts [1]) {
                    case "Version":
                        break;
                    case "Arch32":
                        attr.AddArgument (new LiteralExpression ("PlatformArchitecture.Arch32"));
                        break;
                    case "Arch64":
                        attr.AddArgument (new LiteralExpression ("PlatformArchitecture.Arch64"));
                        break;
                    }
                } else {
                    for (int i = 1; i < parts.Length; i++)
                        attr.AddArgument (new LiteralExpression (parts [i]));
                }

                invocations.Add (attr);
            }
 static void VisitShorthandUnavailableAttribute(LiteralExpression oldAttr, string platformName)
 {
     var newAttr = new InvocationExpression ("Unavailable");
     newAttr.AddArgument (new LiteralExpression (platformName));
     oldAttr.Parent.InsertChildBefore (oldAttr, newAttr);
     oldAttr.Remove ();
 }
 static void VisitMacNamedIntroducedAttribute(LiteralExpression oldAttr, string macMinorVersion)
 {
     var newAttr = new InvocationExpression ("Introduced");
     newAttr.AddArgument (new LiteralExpression ("PlatformName.MacOSX"));
     newAttr.AddArgument (new LiteralExpression ("10"));
     newAttr.AddArgument (new LiteralExpression (macMinorVersion));
     oldAttr.Parent.InsertChildBefore (oldAttr, newAttr);
     oldAttr.Remove ();
 }
 public InvocationExpression(string target)
 {
     Target = new LiteralExpression (target);
 }
示例#7
0
 public override void VisitLiteralExpression(LiteralExpression literalExpression)
 {
     string replacement;
     if (preprocessor.Profile.GlobalReplacements.Evaluate (
             literalExpression.Value,
             out replacement))
         literalExpression.Value = replacement;
 }