示例#1
0
        public bool IsCheckArgument(CstNode e)
        {
            // Preconditions.checkArgument(cond, msg);
            var primary = e.Parent.Parent.Parent.Parent;

            return(primary.Name == "primary" &&
                   primary.Children().Any(e2 => e2.TokenText == "checkArgument") &&
                   !e.PrevsFromFirst().Any());
        }
示例#2
0
        public override bool ProtectedIsAcceptedUsingOracle(CstNode node)
        {
            if (node.Name == "expression")
            {
                node = node.Parent;
            }
            if (node.Name == "argument_value")
            {
                node = node.Parent;
            }
            var pName = node.Parent.Name;

            if (pName == "if_statement")
            {
                return(true);
            }
            if (pName == "while_statement")
            {
                return(true);
            }
            if (pName == "do_statement")
            {
                return(true);
            }
            if (pName == "for_condition")
            {
                return(true);
            }
            if (node.PrevsFromFirst().Any())
            {
                return(false);
            }
            if (node.Name == "boolean_expression")
            {
                node = node.FirstChild;
            }

            var p     = node.Parent.Parent.Parent.Parent.Parent;
            var parts = p.Children("primary_expression_start")
                        .Concat(p.Children("primary_expression_part"))
                        .ToList();

            if (parts.All(
                    e2 => e2.Descendants("identifier")
                    .FirstOrDefault().SafeTokenText() != "Contract"))
            {
                return(false);
            }
            if (parts.All(
                    e2 => e2.Descendants("identifier")
                    .FirstOrDefault().SafeTokenText() != "Requires"))
            {
                return(false);
            }
            return(true);
        }
示例#3
0
        public override bool ProtectedIsAcceptedUsingOracle(CstNode node)
        {
            var p      = node.Parent;
            var pp     = p.Parent;
            var isPar  = p.SafeName() == "parExpression";
            var isStmt = pp.SafeName() == "statement";

            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "if")
            {
                return(true);
            }
            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "while")
            {
                return(true);
            }
            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "do")
            {
                return(true);
            }
            if (p.SafeName() == "forstatement" &&
                p.Children().Count(e2 => e2.TokenText == ";") >= 2)
            {
                return(true);
            }
            {
                var primary = node.SafeParent().SafeParent().SafeParent().SafeParent();
                if (primary.SafeName() != "primary")
                {
                    return(false);
                }
                //if (primary.Elements().All(e2 => e2.TokenText() != "Preconditions")) {
                //	return false;
                //}
                if (primary.Children().All(e2 => e2.TokenText != "checkArgument"))
                {
                    return(false);
                }
                //if (primary.NthElementOrDefault(0).SafeTokenText() != "Preconditions") {
                //	return false;
                //}
                //if (primary.NthElementOrDefault(2).SafeTokenText() != "checkArgument") {
                //	return false;
                //}
                if (node.PrevsFromFirst().Any())
                {
                    return(false);
                }
                return(true);
            }
        }
示例#4
0
        public override bool ProtectedIsAcceptedUsingOracle(CstNode node)
        {
            var p      = node.Parent;
            var pp     = p.Parent;
            var isPar  = p.SafeName() == "parExpression";
            var isStmt = pp.SafeName() == "statement";

            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "if")
            {
                return(node.TokenText != "true");
            }
            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "while")
            {
                return(node.TokenText != "true");
            }
            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "do")
            {
                return(node.TokenText != "true");
            }
            if (p.SafeName() == "forstatement" &&
                p.Children().Count(e2 => e2.TokenText == ";") >= 2)
            {
                return(node.TokenText != "true");
            }
            if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "switch")
            {
                return(true);
            }
            if (node.Name == "switchLabel")
            {
                return(true);
            }
            {
                var primary = node.SafeParent().SafeParent().SafeParent().SafeParent();
                if (primary.SafeName() != "primary")
                {
                    return(false);
                }
                if (primary.Children().All(e2 => e2.TokenText != "checkArgument"))
                {
                    return(false);
                }
                if (node.PrevsFromFirst().Any())
                {
                    return(false);
                }
                return(node.TokenText != "true");
            }
        }
示例#5
0
 public override bool ProtectedIsAcceptedUsingOracle(CstNode node) {
     var p = node.Parent;
     var pp = p.Parent;
     var isPar = p.SafeName() == "parExpression";
     var isStmt = pp.SafeName() == "statement";
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "if") {
         return node.TokenText != "true";
     }
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "while") {
         return node.TokenText != "true";
     }
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "do") {
         return node.TokenText != "true";
     }
     if (p.SafeName() == "forstatement"
         && p.Children().Count(e2 => e2.TokenText == ";") >= 2) {
         return node.TokenText != "true";
     }
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "switch") {
         return true;
     }
     if (node.Name == "switchLabel") {
         return true;
     }
     {
         var primary = node.SafeParent().SafeParent().SafeParent().SafeParent();
         if (primary.SafeName() != "primary") {
             return false;
         }
         if (primary.Children().All(e2 => e2.TokenText != "checkArgument")) {
             return false;
         }
         if (node.PrevsFromFirst().Any()) {
             return false;
         }
         return node.TokenText != "true";
     }
 }
示例#6
0
 public bool IsCheckArgument(CstNode e) {
     // Preconditions.checkArgument(cond, msg);
     var primary = e.Parent.Parent.Parent.Parent;
     return primary.Name == "primary"
            && primary.Children().Any(e2 => e2.TokenText == "checkArgument")
            && !e.PrevsFromFirst().Any();
 }
示例#7
0
 public override bool ProtectedIsAcceptedUsingOracle(CstNode node) {
     var p = node.Parent;
     var pp = p.Parent;
     var isPar = p.SafeName() == "parExpression";
     var isStmt = pp.SafeName() == "statement";
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "if") {
         return true;
     }
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "while") {
         return true;
     }
     if (isStmt && isPar && pp.FirstChild.SafeTokenText() == "do") {
         return true;
     }
     if (p.SafeName() == "forstatement"
         && p.Children().Count(e2 => e2.TokenText == ";") >= 2) {
         return true;
     }
     {
         var primary = node.SafeParent().SafeParent().SafeParent().SafeParent();
         if (primary.SafeName() != "primary") {
             return false;
         }
         //if (primary.Elements().All(e2 => e2.TokenText() != "Preconditions")) {
         //	return false;
         //}
         if (primary.Children().All(e2 => e2.TokenText != "checkArgument")) {
             return false;
         }
         //if (primary.NthElementOrDefault(0).SafeTokenText() != "Preconditions") {
         //	return false;
         //}
         //if (primary.NthElementOrDefault(2).SafeTokenText() != "checkArgument") {
         //	return false;
         //}
         if (node.PrevsFromFirst().Any()) {
             return false;
         }
         return true;
     }
 }