Beispiel #1
0
        public void Property()
        {
            var value = _externalClass.Property;

            ReSharper.TestValueAnalysis(value, value == null /*Expect no warning*/);
            value.Should().BeNull();
        }
Beispiel #2
0
        public void MiscLinqQueries()
        {
            var someEnumerable = new[] { "" };

            var simpleQuery =
                from x in someEnumerable
                select ReSharper.TestValueAnalysis(x, x == null);

            var selectMany =
                from x in new[] { someEnumerable }
            from y in x
            select ReSharper.TestValueAnalysis(y, y == null);

            var letStatement =
                from x in someEnumerable
                // This creates a TransparentVariable, which is an IParameter:
                let y = x
                        select ReSharper.TestValueAnalysis(y, y == null);

            var groupInto =
                from x in someEnumerable
                group x by ReSharper.TestValueAnalysis(x, x == null)
                into g
                select ReSharper.TestValueAnalysis(g, g == null);

            var join =
                from x in someEnumerable
                join y in someEnumerable on x equals ReSharper.TestValueAnalysis(y, y == null)
                select new { X = x, Y = ReSharper.TestValueAnalysis(y, y == null) };

            var joinInto =
                from x in someEnumerable
                join y in someEnumerable on x equals ReSharper.TestValueAnalysis(y, y == null) into g
                select ReSharper.TestValueAnalysis(g, g == null);
        }
Beispiel #3
0
        public void SomeIteratorWithManualNullCheckWithNullArgument()
        {
            Action act =
                () => ReSharper.SuppressUnusedWarning(_instance.SomeIteratorWithManualNullCheck(null /*Expect:AssignNullToNotNullAttribute[MIn]*/));

            act.ShouldNotThrow("no iteration");
        }
Beispiel #4
0
        public void SomeIteratorWithNullArgument()
        {
            Action act = () => ReSharper.SuppressUnusedWarning(_instance.SomeIterator(null /*Expect:AssignNullToNotNullAttribute[MIn]*/));

            act.ShouldThrow <ArgumentNullException>("throws immediately => no ForceIteration needed")
            .And.ParamName.Should().Be("str");
        }
Beispiel #5
0
        public void NonVirtualAsyncMethod()
        {
            var task = _instance.NonVirtualAsyncMethod();

            // For async methods ReSharper's CSharpCodeAnnotationProvider makes the result implicitly NotNull:
            ReSharper.TestValueAnalysis(task, task == null /*Expect:ConditionIsAlwaysTrueOrFalse*/);
        }
Beispiel #6
0
        public void VirtualAsyncMethod()
        {
            var task = _instance.VirtualAsyncMethod();

            // For overridable async methods, ReSharper's CSharpCodeAnnotationProvider doesn't return NotNull:
            ReSharper.TestValueAnalysis(task, task == null /*Expect:ConditionIsAlwaysTrueOrFalse[MOut]*/);
        }
Beispiel #7
0
        public static void MethodWithRefAndOutParameter(ref int *refParam, out int *outParam)
        {
            // REPORTED false negative https://youtrack.jetbrains.com/issue/RSRP-427414:
            ReSharper.TestValueAnalysisUnsafe(refParam, refParam == null);

            refParam = null /*Expect:AssignNullToNotNullAttribute[MRef]*/;
            outParam = null /*Expect:AssignNullToNotNullAttribute[MOut]*/;
        }
        public void MethodWithOptionalParameter(
            // In R# 9+ AssignNullToNotNullAttribute hides NotNullOnImplicitCanBeNull, which is OK:
            [NotNull] string optional = null /*Expect:AssignNullToNotNullAttribute*/)
        {
            // R# ignores the [NotNull] here, but respects it at the call site.

            ReSharper.TestValueAnalysis(optional /*Expect:AssignNullToNotNullAttribute*/, optional == null);
        }
Beispiel #9
0
        public async Task NonAsyncTaskResultFunction()
        {
            var result = await _instance.NonAsyncTaskResultFunction(null);

            ReSharper.TestValueAnalysis(result, result == null /*Expect:ConditionIsAlwaysTrueOrFalse[MOut]*/);

            result.Should().BeNull("not NullGuard rewritten");
        }
 public string ExplicitCanBeNullInBase/*Expect:ImplicitNotNullElementCannotOverrideCanBeNull[MOut]*/ (
     string a /*Expect:ImplicitNotNullConflictInHierarchy[MIn]*/)
 {
     // Here ReSharper inherits the [CanBeNull] from the base member.
     // Note that this is one of the reasons for the ImplicitNotNullElementCannotOverrideCanBeNull warning.
     ReSharper.TestValueAnalysis(a /*Expect:AssignNullToNotNullAttribute*/, a == null);
     return(null /*Expect no warning*/);
 }
Beispiel #11
0
 public void FunctionWithNullableInt_AndNullReturnValue()
 {
     Action act = () =>
     {
         var result = _instance.FunctionWithNullableInt(returnValue: null, outParam: out int?outParam);
         ReSharper.TestValueAnalysis(outParam /*Expect:AssignNullToNotNullAttribute*/, outParam == null);
         ReSharper.TestValueAnalysis(result /*Expect:AssignNullToNotNullAttribute*/, result == null);
     };
 public static ReSharper.NTriples.Tree.IExpression GetByIdentifier (ReSharper.NTriples.Tree.IIdentifier param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Expression) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Expression.IDENTIFIER) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IExpression) current;
 }
 public static ReSharper.NTriples.Tree.ISentences GetBySentenceList (ReSharper.NTriples.Tree.ISentence param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Sentences) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Sentences.SENTENCES) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.ISentences) current;
 }
 public static ReSharper.NTriples.Tree.ISentence GetByStatement (ReSharper.NTriples.Tree.IStatement param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Sentence) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Sentence.STATEMENT) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.ISentence) current;
 }
 public static ReSharper.NTriples.Tree.IUriIdentifier GetByLocalName (ReSharper.NTriples.Tree.ILocalName param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.UriIdentifier) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.UriIdentifier.LOCALNAME) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IUriIdentifier) current;
 }
 public static ReSharper.NTriples.Tree.IIsOfExpression GetByExpression (ReSharper.NTriples.Tree.IExpression param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.IsOfExpression) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.IsOfExpression.EXPRESSION) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IIsOfExpression) current;
 }
        public void MethodWithNullableIntRefAndOutParameterMethod(
            [NotNull] ref int?refParam /*Expect:NotNullOnImplicitCanBeNull[Implicit]*/,
            [NotNull] out int?outParam /*Expect:NotNullOnImplicitCanBeNull[Implicit]*/)
        {
            // REPORT? Warning, although explicitly NotNull
            ReSharper.TestValueAnalysis(refParam /*Expect:AssignNullToNotNullAttribute*/, refParam == null);

            outParam = null /*Expect:AssignNullToNotNullAttribute*/; // This warning results from the explicit NotNull
        }
 public static ReSharper.NTriples.Tree.IUriIdentifier GetByPrefix (ReSharper.NTriples.Tree.IPrefix param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.UriIdentifier) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.UriIdentifier.PREFIX) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IUriIdentifier) current;
 }
 public static ReSharper.NTriples.Tree.IStatement GetBySubject (ReSharper.NTriples.Tree.ISubject param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Statement) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Statement.SUBJECT) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IStatement) current;
 }
 public static ReSharper.NTriples.Tree.IStatement GetByKeywordStatement (ReSharper.NTriples.Tree.IKeywordStatement param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Statement) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Statement.KEYWORD_STATEMENT) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IStatement) current;
 }
 public static ReSharper.NTriples.Tree.IStatement GetByFactsElement (ReSharper.NTriples.Tree.IFacts param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Statement) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Statement.FACTS) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IStatement) current;
 }
 public static ReSharper.NTriples.Tree.IFact GetByPredicate (ReSharper.NTriples.Tree.IPredicate param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Fact) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Fact.PREDICATE) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IFact) current;
 }
Beispiel #23
0
        public void MethodWithOptionalParameter(
            // ReSharper disable AssignNullToNotNullAttribute - because in R# 9+ this hides NotNullOnImplicitCanBeNull
            [NotNull] string optional = null /*Expect:NotNullOnImplicitCanBeNull[Implicit]*/)
        // ReSharper restore AssignNullToNotNullAttribute
        {
            // R# ignores the [NotNull] here, but respects it at the call site.

            ReSharper.TestValueAnalysis(optional /*Expect:AssignNullToNotNullAttribute*/, optional == null);
        }
 public static ReSharper.NTriples.Tree.IPrefixDeclaration GetByPrefixUri (ReSharper.NTriples.Tree.IPrefixUri param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.PrefixDeclaration) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.PrefixDeclaration.URISTRING) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IPrefixDeclaration) current;
 }
Beispiel #25
0
        public void SomeIteratorWithItemCanBeNull()
        {
            foreach (var item in _instance.SomeIteratorWithItemCanBeNull())
            {
                ReSharper.TestValueAnalysis(item /*Expect:AssignNullToNotNullAttribute*/, item == null);

                item.Should().BeNull();
            }
        }
 public static ReSharper.NTriples.Tree.IUriIdentifier GetByUriStringElement (ReSharper.NTriples.Tree.IUriString param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.UriIdentifier) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.UriIdentifier.URISTRING) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IUriIdentifier) current;
 }
 public static ReSharper.NTriples.Tree.ISentence GetByDirective (ReSharper.NTriples.Tree.IDirective param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Sentence) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Sentence.DIRECTIVE) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.ISentence) current;
 }
   internal static void TestDataLiteral (int level, ReSharper.NTriples.Tree.IDataLiteral param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IDataLiteral)param).String;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "String");
   }
 }
Beispiel #29
0
        public void SomeIteratorWithItemNotNull()
        {
            foreach (var item in _instance.SomeIteratorWithItemNotNull())
            {
                ReSharper.TestValueAnalysis(item, item == null /*Expect:ConditionIsAlwaysTrueOrFalse*/);

                item.Should().BeNull();
            }
        }
Beispiel #30
0
        public void SomeIteratorResult()
        {
            var someIterator = _instance.SomeIterator("");

            // Note that MOut also applies here (and NotNull is satisfied by definition):
            ReSharper.TestValueAnalysis(someIterator, someIterator == null /*Expect:ConditionIsAlwaysTrueOrFalse[MOut]*/);

            someIterator.Should().NotBeNull();
        }
Beispiel #31
0
        public void SomeIteratorReturningNullItem()
        {
            foreach (var item in _instance.SomeIteratorReturningNullItem())
            {
                ReSharper.TestValueAnalysis(item, item == null);

                item.Should().BeNull();
            }
        }
Beispiel #32
0
        public void FunctionWithNonNullReturnValue()
        {
            Action act = () =>
            {
                var result = _instance.Function(returnValue: "");
                ReSharper.TestValueAnalysis(result, result == null /*Expect:ConditionIsAlwaysTrueOrFalse[MOut]*/);
            };

            act.ShouldNotThrow();
        }
        public void Consume()
        {
            ReSharper.TestValueAnalysis(SomeResources.Culture, SomeResources.Culture == null /*Expect:ConditionIsAlwaysTrueOrFalse[InclGenCode]*/);

            var resourceManager = SomeResources.ResourceManager;

            ReSharper.TestValueAnalysis(resourceManager, resourceManager == null /*Expect:ConditionIsAlwaysTrueOrFalse[InclGenCode]*/);

            ReSharper.TestValueAnalysis(SomeResources.StringA, SomeResources.StringA == null /*Expect:ConditionIsAlwaysTrueOrFalse[InclGenCode]*/);
        }
Beispiel #34
0
        public void FunctionWithCanBeNull_AndNullReturnValue()
        {
            Action act = () =>
            {
                var result = _instance.FunctionWithCanBeNull(returnValue: null);
                ReSharper.TestValueAnalysis(result /*Expect:AssignNullToNotNullAttribute*/, result == null);
            };

            act.ShouldNotThrow();
        }
Beispiel #35
0
        public void GetterOnlyPropertyOnExternalClass()
        {
            Action act = () =>
            {
                var result = _externalClass.GetterOnlyProperty;
                ReSharper.TestValueAnalysis(result, result == null); // unknown nullability
            };

            act.ShouldNotThrow();
        }
Beispiel #36
0
        public void FunctionOnExternalClass()
        {
            Action act = () =>
            {
                var result = _externalClass.Function();
                ReSharper.TestValueAnalysis(result, result == null); // unknown nullability
            };

            act.ShouldNotThrow();
        }
   internal static void TestExpression (int level, ReSharper.NTriples.Tree.IExpression param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     JetBrains.ReSharper.Psi.Tree.TreeNodeCollection<ReSharper.NTriples.Tree.IIdentifier> children = ((ReSharper.NTriples.Tree.IExpression)param).Identifiers;
     foreach (ReSharper.NTriples.Tree.IIdentifier child in children)
     TestIdentifier (level + 1, (ReSharper.NTriples.Tree.IIdentifier)child, "Identifiers");
   }
 }
Beispiel #38
0
        public void Function()
        {
            Action act = () =>
            {
                var result = _externalClass.Function();
                ReSharper.TestValueAnalysis(result, result == null /*Expect no warning*/);
            };

            act.ShouldNotThrow();
        }
Beispiel #39
0
        public void CtorWithNotNullArgument()
        {
            Action act = () =>
            {
                var instance = new ConstructorsSample("");
                ReSharper.TestValueAnalysis(instance, instance == null /*Expect:ConditionIsAlwaysTrueOrFalse*/);
            };

            act.ShouldNotThrow();
        }
Beispiel #40
0
        public void IndexerGetterWithNonNullParameterAndResult()
        {
            Action act = () =>
            {
                var value = _instance[""];
                ReSharper.TestValueAnalysis(value, value == null /*Expect:ConditionIsAlwaysTrueOrFalse[Prps && !RtGo]*/);
            };

            act.ShouldNotThrow();
        }
Beispiel #41
0
        public void IndexerGetterWithNullableParametersAndResult()
        {
            Action act = () =>
            {
                var value = _instance[canBeNull : null, nullableInt : null, optional : null];
                ReSharper.TestValueAnalysis(value /*Expect:AssignNullToNotNullAttribute*/, value == null);
            };

            act.ShouldNotThrow();
        }
   internal static void TestNTriplesFile (int level, ReSharper.NTriples.Tree.INTriplesFile param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     JetBrains.ReSharper.Psi.Tree.TreeNodeCollection<ReSharper.NTriples.Tree.ISentence> children = ((ReSharper.NTriples.Tree.INTriplesFile)param).Sentences;
     foreach (ReSharper.NTriples.Tree.ISentence child in children)
     TestSentence (level + 1, (ReSharper.NTriples.Tree.ISentence)child, "Sentences");
   }
 }
Beispiel #43
0
        public async Task ConsumeAsnc()
        {
            // Atm. "item..." is not supported. See https://youtrack.jetbrains.com/issue/RSRP-462282.
            var functionWithNotNull = await FunctionWithNotNullAsync();

            ReSharper.TestValueAnalysis(functionWithNotNull, functionWithNotNull == null);

            var functionWithoutContract = await FunctionWithoutContractAsync();

            ReSharper.TestValueAnalysis(functionWithoutContract, functionWithoutContract == null /*Expect:ConditionIsAlwaysTrueOrFalse[MOut]*/);
        }
Beispiel #44
0
        public void FunctionWithExplicitNotNull()
        {
            Func <Task> act = async() =>
            {
                var result = await _instance.FunctionWithExplicitItemNotNull(returnValue : "");

                ReSharper.TestValueAnalysis(result, result == null /*Expect:ConditionIsAlwaysTrueOrFalse*/);
            };

            act.ShouldNotThrow();
        }
Beispiel #45
0
        public void FunctionWithNullableInt()
        {
            Func <Task> act = async() =>
            {
                var result = await _instance.FunctionWithNullableInt(returnValue : null);

                ReSharper.TestValueAnalysis(result /*Expect:AssignNullToNotNullAttribute[MOut]*/, result == null);
            };

            act.ShouldNotThrow();
        }
Beispiel #46
0
        public void AsyncFunction()
        {
            Func <Task> act = async() =>
            {
                var result = await _externalClass.AsyncFunction();

                ReSharper.TestValueAnalysis(result, result == null /*Expect no warning*/);
            };

            act.ShouldNotThrow();
        }
 public static ReSharper.NTriples.Tree.IFact GetByObject (ReSharper.NTriples.Tree.IExpression param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Objects) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Objects.EXPRESSIONS) return null;
     current = current.parent;
   } else return null;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Fact) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Fact.OBJECTS) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IFact) current;
 }
 public static ReSharper.NTriples.Tree.IFact GetByPredicateIdentifier (ReSharper.NTriples.Tree.IIdentifier param) {
   if (param == null) return null;
   TreeElement current = (TreeElement)param;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Expression) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Expression.IDENTIFIER) return null;
     current = current.parent;
   } else return null;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Predicate) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Predicate.EXPRESSION) return null;
     current = current.parent;
   } else return null;
   if (current.parent is ReSharper.NTriples.Impl.Tree.Fact) {
     if (current.parent.GetChildRole (current) != ReSharper.NTriples.Impl.Tree.Fact.PREDICATE) return null;
     current = current.parent;
   } else return null;
   return (ReSharper.NTriples.Tree.IFact) current;
 }
   internal static void TestFact (int level, ReSharper.NTriples.Tree.IFact param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     ReSharper.NTriples.Tree.IPredicate child = ((ReSharper.NTriples.Tree.IFact)param).Predicate;
     TestPredicate (level + 1, (ReSharper.NTriples.Tree.IPredicate)child, "Predicate");
   }
   {
     JetBrains.ReSharper.Psi.Tree.TreeNodeCollection<ReSharper.NTriples.Tree.IExpression> children = ((ReSharper.NTriples.Tree.IFact)param).Objects;
     foreach (ReSharper.NTriples.Tree.IExpression child in children)
     TestExpression (level + 1, (ReSharper.NTriples.Tree.IExpression)child, "Objects");
   }
   {
     JetBrains.ReSharper.Psi.Tree.TreeNodeCollection<ReSharper.NTriples.Tree.IIdentifier> children = ((ReSharper.NTriples.Tree.IFact)param).PredicateIdentifiers;
     foreach (ReSharper.NTriples.Tree.IIdentifier child in children)
     TestIdentifier (level + 1, (ReSharper.NTriples.Tree.IIdentifier)child, "PredicateIdentifiers");
   }
 }
   internal static void TestCutStatement (int level, ReSharper.NTriples.Tree.ICutStatement param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
 }
   internal static void TestIsOfExpression (int level, ReSharper.NTriples.Tree.IIsOfExpression param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     ReSharper.NTriples.Tree.IExpression child = ((ReSharper.NTriples.Tree.IIsOfExpression)param).Expression;
     TestExpression (level + 1, (ReSharper.NTriples.Tree.IExpression)child, "Expression");
   }
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IIsOfExpression)param).IsKeyword;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "IsKeyword");
   }
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IIsOfExpression)param).OfKeyword;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "OfKeyword");
   }
 }
   internal static void TestLiteral (int level, ReSharper.NTriples.Tree.ILiteral param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   if (param is ReSharper.NTriples.Tree.IDataLiteral) TestDataLiteral (level, (ReSharper.NTriples.Tree.IDataLiteral)param, caller);
   else throw new System.InvalidOperationException();
 }
   internal static void TestLiteral_keywords (int level, ReSharper.NTriples.Tree.ILiteral_keywords param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   else throw new System.InvalidOperationException();
 }
   internal static void TestForAllDirective (int level, ReSharper.NTriples.Tree.IForAllDirective param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
 }
   internal static void TestVariableIdentifier (int level, ReSharper.NTriples.Tree.IVariableIdentifier param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
 }
   internal static void TestUriString (int level, ReSharper.NTriples.Tree.IUriString param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IUriString)param).Value;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "Value");
   }
 }
   internal static void TestUriIdentifier (int level, ReSharper.NTriples.Tree.IUriIdentifier param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     ReSharper.NTriples.Tree.ILocalName child = ((ReSharper.NTriples.Tree.IUriIdentifier)param).LocalName;
     TestLocalName (level + 1, (ReSharper.NTriples.Tree.ILocalName)child, "LocalName");
   }
   {
     ReSharper.NTriples.Tree.IPrefix child = ((ReSharper.NTriples.Tree.IUriIdentifier)param).Prefix;
     TestPrefix (level + 1, (ReSharper.NTriples.Tree.IPrefix)child, "Prefix");
   }
   {
     ReSharper.NTriples.Tree.IUriString child = ((ReSharper.NTriples.Tree.IUriIdentifier)param).UriStringElement;
     TestUriString (level + 1, (ReSharper.NTriples.Tree.IUriString)child, "UriStringElement");
   }
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IUriIdentifier)param).UriString;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "UriString");
   }
 }
   internal static void TestStatement (int level, ReSharper.NTriples.Tree.IStatement param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     ReSharper.NTriples.Tree.IFacts child = ((ReSharper.NTriples.Tree.IStatement)param).FactsElement;
     TestFacts (level + 1, (ReSharper.NTriples.Tree.IFacts)child, "FactsElement");
   }
   {
     ReSharper.NTriples.Tree.IKeywordStatement child = ((ReSharper.NTriples.Tree.IStatement)param).KeywordStatement;
     TestKeywordStatement (level + 1, (ReSharper.NTriples.Tree.IKeywordStatement)child, "KeywordStatement");
   }
   {
     ReSharper.NTriples.Tree.ISubject child = ((ReSharper.NTriples.Tree.IStatement)param).Subject;
     TestSubject (level + 1, (ReSharper.NTriples.Tree.ISubject)child, "Subject");
   }
   {
     JetBrains.ReSharper.Psi.Tree.TreeNodeCollection<ReSharper.NTriples.Tree.IFact> children = ((ReSharper.NTriples.Tree.IStatement)param).Facts;
     foreach (ReSharper.NTriples.Tree.IFact child in children)
     TestFact (level + 1, (ReSharper.NTriples.Tree.IFact)child, "Facts");
   }
 }
   internal static void TestPrefixDeclaration (int level, ReSharper.NTriples.Tree.IPrefixDeclaration param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IPrefixDeclaration)param).Prefix;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "Prefix");
   }
   {
     ReSharper.NTriples.Tree.IPrefixName child = ((ReSharper.NTriples.Tree.IPrefixDeclaration)param).PrefixName;
     TestPrefixName (level + 1, (ReSharper.NTriples.Tree.IPrefixName)child, "PrefixName");
   }
   {
     ReSharper.NTriples.Tree.IPrefixUri child = ((ReSharper.NTriples.Tree.IPrefixDeclaration)param).PrefixUri;
     TestPrefixUri (level + 1, (ReSharper.NTriples.Tree.IPrefixUri)child, "PrefixUri");
   }
   {
     JetBrains.ReSharper.Psi.Tree.ITokenNode child = ((ReSharper.NTriples.Tree.IPrefixDeclaration)param).UriString;
     TestTokenNode (level + 1, (JetBrains.ReSharper.Psi.Tree.ITokenNode)child, "UriString");
   }
 }
   internal static void TestSentence (int level, ReSharper.NTriples.Tree.ISentence param, String caller)
 {
   if (!CanVisitFurther(param)) return;
   VisitElement (level, param, caller);
   {
     ReSharper.NTriples.Tree.IDirective child = ((ReSharper.NTriples.Tree.ISentence)param).Directive;
     TestDirective (level + 1, (ReSharper.NTriples.Tree.IDirective)child, "Directive");
   }
   {
     ReSharper.NTriples.Tree.IStatement child = ((ReSharper.NTriples.Tree.ISentence)param).Statement;
     TestStatement (level + 1, (ReSharper.NTriples.Tree.IStatement)child, "Statement");
   }
 }