コード例 #1
0
        protected override void HandleStatement(HandleContext context)
        {
            AssignmentStatement assignment = (AssignmentStatement)context.Statement;

            if (!CoversAssignment(assignment))
            {
                return;
            }

            Method sourceConstructor             = ExtractConstructor(assignment.Source);
            string variableName                  = IntrospectionUtility.GetVariableName(assignment.Target);
            bool   fragmentTypeInferenceRequired = FirstParameterIsString(sourceConstructor);

            if (fragmentTypeInferenceRequired)
            {
                Fragment fragmentType = FirstOperandsFragmentType(assignment, context);
                context.StringBuilderFragmentTypeDefined[variableName] = true;
                context.SymbolTable.MakeSafe(variableName, fragmentType);
            }
            else
            {
                //context.StringBuilderFragmentTypeDefined[variableName] = false;
                context.SymbolTable.MakeSafe(variableName, Fragment.CreateUndefined());
            }
        }
コード例 #2
0
 public void NamedFragmentAssignableToUndefinedFragment()
 {
     FragmentUtility.FragmentTypesAssignable(Fragment.CreateNamed("dummy"), Fragment.CreateUndefined());
 }
コード例 #3
0
 public void UndefinedFragmentIsUndefined()
 {
     Assert.That(Fragment.CreateUndefined().Undefined, Is.True);
 }
コード例 #4
0
 public void UndefinedFragmentIsNotNamed()
 {
     Assert.That(Fragment.CreateUndefined() == Fragment.CreateNamed("dummy"), Is.False);
 }
コード例 #5
0
 public void UndefinedFragmentIsNoLiteral()
 {
     Assert.That(Fragment.CreateUndefined() == Fragment.CreateLiteral(), Is.False);
 }
コード例 #6
0
 public void UndefinedFragmentBehavesLikeEmptyFragment()
 {
     Assert.That(Fragment.CreateUndefined() == Fragment.CreateEmpty(), Is.True);
 }