예제 #1
0
 public TupleElementFieldSymbol(
     NamedTypeSymbol container,
     FieldSymbol underlyingField,
     int tupleElementIndex,
     ImmutableArray <Location> locations,
     bool isImplicitlyDeclared,
     TupleElementFieldSymbol?correspondingDefaultFieldOpt)
     : base(container, underlyingField, correspondingDefaultFieldOpt is null ? tupleElementIndex << 1 : (tupleElementIndex << 1) + 1)
 {
     Debug.Assert(container.IsTupleType);
     Debug.Assert(!locations.IsDefault);
     _locations                 = locations;
     _isImplicitlyDeclared      = isImplicitlyDeclared;
     _correspondingDefaultField = correspondingDefaultFieldOpt ?? this;
 }
예제 #2
0
        public TupleVirtualElementFieldSymbol(
            TupleTypeSymbol container,
            FieldSymbol underlyingField,
            string name,
            int tupleElementIndex,
            Location location,
            bool isImplicitlyDeclared,
            TupleElementFieldSymbol correspondingDefaultFieldOpt)

            : base(container, underlyingField, tupleElementIndex, location, isImplicitlyDeclared, correspondingDefaultFieldOpt)
        {
            Debug.Assert(name != null);
            Debug.Assert(name != underlyingField.Name || !container.UnderlyingNamedType.Equals(underlyingField.ContainingType, TypeCompareKind.IgnoreDynamicAndTupleNames),
                         "fields that map directly to underlying should not be represented by " + nameof(TupleVirtualElementFieldSymbol));

            _name = name;
        }
예제 #3
0
        public TupleElementFieldSymbol(
            TupleTypeSymbol container,
            FieldSymbol underlyingField,
            int tupleElementIndex,
            Location location,
            bool isImplicitlyDeclared,
            TupleElementFieldSymbol correspondingDefaultFieldOpt)

            : base(container, underlyingField, (object)correspondingDefaultFieldOpt == null ? tupleElementIndex << 1 : (tupleElementIndex << 1) + 1)
        {
            _locations            = location == null ? ImmutableArray <Location> .Empty : ImmutableArray.Create(location);
            _isImplicitlyDeclared = isImplicitlyDeclared;

            Debug.Assert((correspondingDefaultFieldOpt == null) == this.IsDefaultTupleElement);
            Debug.Assert(correspondingDefaultFieldOpt == null || correspondingDefaultFieldOpt.IsDefaultTupleElement);

            _correspondingDefaultField = correspondingDefaultFieldOpt ?? this;
        }
예제 #4
0
        public TupleVirtualElementFieldSymbol(
            TupleTypeSymbol container, 
            FieldSymbol underlyingField, 
            string name, 
            int tupleElementIndex, 
            Location location, 
            bool isImplicitlyDeclared, 
            TupleElementFieldSymbol correspondingDefaultFieldOpt)

            : base(container, underlyingField, tupleElementIndex, location, isImplicitlyDeclared, correspondingDefaultFieldOpt)
        {
            Debug.Assert(name != null);
            Debug.Assert(name != underlyingField.Name || !container.UnderlyingNamedType.Equals(underlyingField.ContainingType, TypeCompareKind.IgnoreDynamicAndTupleNames),
                                "fields that map directly to underlying should not be represented by " + nameof(TupleVirtualElementFieldSymbol));

            _name = name;
        }
예제 #5
0
        public TupleElementFieldSymbol(
            TupleTypeSymbol container, 
            FieldSymbol underlyingField, 
            int tupleElementIndex, 
            Location location, 
            bool isImplicitlyDeclared, 
            TupleElementFieldSymbol correspondingDefaultFieldOpt)

            : base(container, underlyingField, (object)correspondingDefaultFieldOpt == null ? tupleElementIndex << 1 : (tupleElementIndex << 1) + 1)
        {
            _locations = location == null ? ImmutableArray<Location>.Empty : ImmutableArray.Create(location);
            _isImplicitlyDeclared = isImplicitlyDeclared;

            Debug.Assert((correspondingDefaultFieldOpt == null) == this.IsDefaultTupleElement);
            Debug.Assert(correspondingDefaultFieldOpt == null || correspondingDefaultFieldOpt.IsDefaultTupleElement);

            _correspondingDefaultField = correspondingDefaultFieldOpt ?? this;
        }