Esempio n. 1
0
        public TypeWithAnnotations ToTypeWithAnnotations(
            CSharpCompilation compilation,
            bool asAnnotatedType = false
            )
        {
            if (Type?.IsTypeParameterDisallowingAnnotationInCSharp8() == true)
            {
                var type = TypeWithAnnotations.Create(Type, NullableAnnotation.NotAnnotated);
                return(State == NullableFlowState.MaybeDefault
                  ? type.SetIsAnnotated(compilation)
                  : type);
            }
            NullableAnnotation annotation = asAnnotatedType
                ? (
                Type?.IsValueType == true
                          ? NullableAnnotation.NotAnnotated
                          : NullableAnnotation.Annotated
                )
                : (
                State.IsNotNull() || Type?.CanContainNull() == false
                          ? NullableAnnotation.NotAnnotated
                          : NullableAnnotation.Annotated
                );

            return(TypeWithAnnotations.Create(this.Type, annotation));
        }