1 write to Signature
Microsoft.CodeAnalysis.CSharp (1)
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (1)
68Signature = signature;
181 references to Signature
Microsoft.CodeAnalysis.CSharp (99)
Binder\Binder.ValueChecks.cs (5)
708return CheckMethodReturnValueKind(((BoundFunctionPointerInvocation)expr).FunctionPointer.Signature, 3034var methodSymbol = ptrInvocation.FunctionPointer.Signature; 3366FunctionPointerMethodSymbol signature = functionPointerInvocation.FunctionPointer.Signature; 3596var ptrSymbol = ptrInvocation.FunctionPointer.Signature; 4026var ptrSymbol = ptrInvocation.FunctionPointer.Signature;
Binder\Binder_Conversions.cs (2)
748delegateMethod = functionPointerType.Signature; 1283FunctionPointerTypeSymbol { Signature: { } signature } => signature,
Binder\Binder_Crefs.cs (1)
561MethodSymbol signature = ((FunctionPointerTypeSymbol)type).Signature;
Binder\Binder_Invocation.cs (4)
2016methodsBuilder.Add(funcPtr.Signature); 2040returnRefKind: funcPtr.Signature.RefKind); 2048funcPtr.Signature.ReturnType, 2067funcPtr.Signature.ReturnType,
Binder\RefSafetyAnalysis.cs (1)
688var method = node.FunctionPointer.Signature;
Binder\Semantics\AccessCheck.cs (2)
168if (!IsSymbolAccessibleCore(funcPtr.Signature.ReturnType, within, throughTypeOpt: null, out failedThroughTypeCheck, compilation, ref useSiteInfo, basesBeingResolved)) 173foreach (var param in funcPtr.Signature.Parameters)
Binder\Semantics\Conversions\Conversions.cs (5)
118destination.Signature, 120new CallingConventionInfo(destination.Signature.CallingConvention, destination.Signature.GetCallingConventionModifiers()), 124ToConversion(resolution.OverloadResolutionResult, resolution.MethodGroup, destination.Signature.ParameterCount); 177if (type is FunctionPointerTypeSymbol { Signature: { } signature })
Binder\Semantics\Conversions\ConversionsBase.cs (2)
3149if (!(source is FunctionPointerTypeSymbol { Signature: { } sourceSig }) 3150|| !(destination is FunctionPointerTypeSymbol { Signature: { } destinationSig }))
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (8)
969FunctionPointerTypeSymbol f => f.Signature, 1350FunctionPointerTypeSymbol f => (f.Signature, true), 1716else if (source.Type is FunctionPointerTypeSymbol { Signature: { ParameterCount: int sourceParameterCount } sourceSignature } && 1717target.Type is FunctionPointerTypeSymbol { Signature: { ParameterCount: int targetParameterCount } targetSignature } && 2205if (source is not FunctionPointerTypeSymbol { Signature: { } sourceSignature } || target is not FunctionPointerTypeSymbol { Signature: { } targetSignature }) 2555if (source is not FunctionPointerTypeSymbol { Signature: { } sourceSignature } || target is not FunctionPointerTypeSymbol { Signature: { } targetSignature })
Binder\Semantics\OverloadResolution\OverloadResolutionResult.cs (1)
528ReportWrongCallingConvention(location, diagnostics, symbols, firstSupported, ((FunctionPointerTypeSymbol)delegateOrFunctionPointerType).Signature);
CodeGen\EmitAddress.cs (1)
127var funcPtrRefKind = funcPtrInvocation.FunctionPointer.Signature.RefKind;
CodeGen\EmitExpression.cs (5)
2003return ((BoundFunctionPointerInvocation)receiver).FunctionPointer.Signature.RefKind != RefKind.None; 2724Debug.Assert(left.FunctionPointer.Signature.RefKind != RefKind.None); 2920Debug.Assert(((BoundFunctionPointerInvocation)expression).FunctionPointer.Signature.RefKind != RefKind.None); 3755FunctionPointerMethodSymbol method = ptrInvocation.FunctionPointer.Signature; 3757var stackBehavior = GetCallStackBehavior(ptrInvocation.FunctionPointer.Signature, ptrInvocation.Arguments);
CodeGen\Optimizer.cs (1)
1060Debug.Assert(((BoundFunctionPointerInvocation)lhs).FunctionPointer.Signature.RefKind == RefKind.Ref, "only ref returning function pointers are assignable");
Emitter\EditAndContinue\CSharpSymbolMatcher.cs (4)
601var sig = symbol.Signature; 876var sig = type.Signature; 877var otherSig = other.Signature; 1111var sig = symbol.Signature;
Emitter\Model\FunctionPointerTypeSymbolAdapter.cs (1)
31Interlocked.CompareExchange(ref _lazySignature, new FunctionPointerMethodSignature(AdaptedFunctionPointerTypeSymbol.Signature), null);
FlowAnalysis\AbstractFlowPass.cs (1)
3553VisitArguments(node.Arguments, node.ArgumentRefKindsOpt, node.FunctionPointer.Signature);
FlowAnalysis\NullableWalker.cs (3)
7998FunctionPointerTypeSymbol { Signature: { Parameters: { } parameters } signature } => (signature, parameters), 11191node.FunctionPointer.Signature, 11197var returnTypeWithAnnotations = node.FunctionPointer.Signature.ReturnTypeWithAnnotations;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
691Debug.Assert(((BoundFunctionPointerInvocation)originalLHS).FunctionPointer.Signature.RefKind != RefKind.None);
Lowering\LocalRewriter\LocalRewriter_FunctionPointerInvocation.cs (1)
22MethodSymbol functionPointer = node.FunctionPointer.Signature;
Operations\CSharpOperationFactory_Methods.cs (1)
265return DeriveArguments(boundFunctionPointerInvocation.FunctionPointer.Signature,
Symbols\AbstractTypeMap.cs (6)
240var substitutedReturnType = f.Signature.ReturnTypeWithAnnotations.SubstituteType(this); 241var refCustomModifiers = f.Signature.RefCustomModifiers; 244var parameterTypesWithAnnotations = f.Signature.ParameterTypesWithAnnotations; 249var paramCount = f.Signature.Parameters.Length; 254foreach (var param in f.Signature.Parameters) 276|| !f.Signature.ReturnTypeWithAnnotations.IsSameAs(substitutedReturnType)
Symbols\Compilation_WellKnownMembers.cs (1)
974var sig = funcPtr.Signature;
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (15)
64=> new FunctionPointerTypeSymbol(Signature.SubstituteParameterSymbols(substitutedReturnType, substitutedParameterTypes, refCustomModifiers, paramRefCustomModifiers)); 111return Signature.Equals(other.Signature, compareKind); 116return Hash.Combine(1, Signature.GetHashCode()); 132Signature.AddNullableTransforms(transforms); 137var newSignature = Signature.ApplyNullableTransforms(defaultTransformFlag, transforms, ref position); 138bool madeChanges = (object)Signature != newSignature; 145UseSiteInfo<AssemblySymbol> fromSignature = Signature.GetUseSiteInfo(); 147if (fromSignature.DiagnosticInfo?.Code == (int)ErrorCode.ERR_BindToBogus && fromSignature.DiagnosticInfo.Arguments.AsSingleton() == (object)Signature) 157return Signature.GetUnificationUseSiteDiagnosticRecursive(ref result, owner, ref checkedTypes); 163var mergedSignature = Signature.MergeEquivalentTypes(((FunctionPointerTypeSymbol)other).Signature, variance); 164if ((object)mergedSignature != Signature) 174var substitutedSignature = Signature.SetNullabilityForReferenceTypes(transform); 175if ((object)Signature != substitutedSignature)
Symbols\Metadata\PE\DynamicTypeDecoder.cs (1)
352var sig = type.Signature;
Symbols\Metadata\PE\NativeIntegerTypeDecoder.cs (6)
176if (TransformTypeWithAnnotations(type.Signature.ReturnTypeWithAnnotations) is not { } transformedReturnType) 184if (type.Signature.ParameterCount > 0) 186var builder = ArrayBuilder<TypeWithAnnotations>.GetInstance(type.Signature.ParameterCount); 187foreach (var param in type.Signature.Parameters) 204transformedParameterTypes = type.Signature.ParameterTypesWithAnnotations; 209if (paramsModified || !transformedReturnType.IsSameAs(type.Signature.ReturnTypeWithAnnotations))
Symbols\Metadata\PE\TupleTypeDecoder.cs (7)
214if (type.Signature.ParameterCount > 0) 216var paramsBuilder = ArrayBuilder<TypeWithAnnotations>.GetInstance(type.Signature.ParameterCount); 218for (int i = type.Signature.ParameterCount - 1; i >= 0; i--) 220var param = type.Signature.Parameters[i]; 233parameterTypes = type.Signature.ParameterTypesWithAnnotations; 238var decodedReturnType = DecodeTypeInternal(type.Signature.ReturnTypeWithAnnotations); 240if (paramsModified || !decodedReturnType.IsSameAs(type.Signature.ReturnTypeWithAnnotations))
Symbols\PublicModel\FunctionPointerTypeSymbol.cs (1)
21public IMethodSymbol Signature => _underlying.Signature.GetPublicSymbol();
Symbols\Retargeting\RetargetingSymbolTranslator.cs (1)
761var signature = type.Signature;
Symbols\TypeSymbolExtensions.cs (7)
522if (type is FunctionPointerTypeSymbol { Signature: { Parameters: var functionPointerParameters } }) 866MethodSymbol currentPointer = type.Signature; 1953var returnType = funcPtrType.Signature.ReturnTypeWithAnnotations; 1958if (funcPtrType.Signature.ParameterCount > 0) 1960var paramsBuilder = ArrayBuilder<TypeWithAnnotations>.GetInstance(funcPtrType.Signature.ParameterCount); 1962foreach (var param in funcPtrType.Signature.Parameters) 1976paramTypes = funcPtrType.Signature.ParameterTypesWithAnnotations;
Utilities\TypeSymbolExtensions.cs (4)
43return ((FunctionPointerTypeSymbol)type).Signature.CustomModifierCount(); 113if (!funcPtr.Signature.RefCustomModifiers.IsEmpty || checkTypeWithAnnotations(funcPtr.Signature.ReturnTypeWithAnnotations, flagNonDefaultArraySizesOrLowerBounds)) 118foreach (var param in funcPtr.Signature.Parameters)
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (19)
CodeGen\CodeGenFunctionPointersTests.cs (19)
124Assert.Equal(CallingConvention.Unmanaged, ((FunctionPointerTypeSymbol)funcPtr).Signature.CallingConvention); 303var signature = ((FunctionPointerTypeSymbol)field.Type).Signature; 379var signature = ((FunctionPointerTypeSymbol)field.Type).Signature; 693var returnModifiers = param.Signature.ReturnTypeWithAnnotations.CustomModifiers; 696var returnRefModifiers = param.Signature.RefCustomModifiers; 699var paramModifiers = param.Signature.ParameterTypesWithAnnotations[0].CustomModifiers; 702var paramRefModifiers = param.Signature.Parameters[0].RefCustomModifiers; 868var returnTypeWithAnnotations = ((FunctionPointerTypeSymbol)m.ReturnType).Signature.ReturnTypeWithAnnotations; 999Assert.True(type.Signature.IsVararg); 2543Assert.Equal(i1, returnType.Signature.ReturnType); 2544Assert.Equal(i2, returnType.Signature.ParameterTypesWithAnnotations[0].Type); 7048verifyArray(funcPtr.Signature.Parameters.Single().Type); 7052verifyArray(funcPtr.Signature.Parameters.Single().Type); 7056verifyArray(funcPtr.Signature.ReturnType); 7060verifyArray(funcPtr.Signature.ReturnType); 7677Assert.Empty(funcPtrWithTestOnReturn.Signature.GetCallingConventionModifiers()); 7678Assert.Empty(funcPtrWithTestOnRef.Signature.GetCallingConventionModifiers()); 7762Assert.Empty(funcPtrWithTestOnReturn.Signature.GetCallingConventionModifiers()); 7763Assert.Empty(funcPtrWithTestOnRef.Signature.GetCallingConventionModifiers());
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (4)
Semantics\FunctionPointerTests.cs (2)
2111funcPtrType.Signature.GetCallingConventionModifiers().Select(c => ((CSharpCustomModifier)c).ModifierSymbol.ToTestDisplayString())); 3924Assert.False(type.Signature.IsVararg);
Semantics\RefFieldTests.cs (2)
10772var methods = decls.Select(d => ((FunctionPointerTypeSymbol)model.GetDeclaredSymbol(d).GetSymbol<LocalSymbol>().Type).Signature).ToArray(); 24262((FunctionPointerTypeSymbol)comp.GetMember<FieldSymbol>(qualifiedName).Type).Signature;
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (55)
Symbols\FunctionPointerTypeSymbolTests.cs (43)
45Assert.Equal(expectedKind, pointerType.Signature.RefKind); 46Assert.Equal(SpecialType.System_Object, pointerType.Signature.ReturnType.SpecialType); 47Assert.Empty(pointerType.Signature.Parameters); 173=> Assert.Equal(expected, ((FunctionPointerTypeSymbol)actual.Type).Signature.RefKind); 196var firstSignature = ((FunctionPointerTypeSymbol)m.Parameters[0].Type).Signature; 197var secondSignature = ((FunctionPointerTypeSymbol)m.Parameters[1].Type).Signature; 266Assert.Equal(expectedConvention, pointerType.Signature.CallingConvention); 267Assert.Equal(SpecialType.System_String, pointerType.Signature.ReturnType.SpecialType); 327Assert.Equal(CallingConvention.Unmanaged, m1PointerType.Signature.CallingConvention); 331Assert.Equal(CallingConvention.Unmanaged, m2PointerType.Signature.CallingConvention); 335Assert.Equal(CallingConvention.Unmanaged, m3PointerType.Signature.CallingConvention); 399var sixthParamParam = ((FunctionPointerTypeSymbol)sixthParam.Parameters.Single().Type).Signature; 447Assert.True(type.Signature.ReturnsVoid); 448return type.Signature; 517return type.Signature; 659return type.Signature; 679var signature = ((FunctionPointerTypeSymbol)m.Parameters.Single().Type).Signature; 907assertSymbolEquality(p1.Signature, p2.Signature, overallEquality); 909var ret1 = p1.Signature.ReturnTypeWithAnnotations; 910var ret2 = p2.Signature.ReturnTypeWithAnnotations; 913if (p1.Signature.RefKind == p2.Signature.RefKind) 921Assert.Equal(p1.Signature.RefKind, p2.Signature.RefKind); 927for (int i = 0; i < p1.Signature.ParameterCount; i++) 929ParameterSymbol param1 = p1.Signature.Parameters[i]; 930ParameterSymbol param2 = p2.Signature.Parameters[i]; 938for (int j = 0; j < p1.Signature.ParameterCount; j++) 942assertSymbolEquality(param1, p2.Signature.Parameters[j], Equality.NotEqual); 943assertSymbolEquality(param2, p1.Signature.Parameters[j], Equality.NotEqual); 2036Assert.Equal(expectedConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2037Assert.Equal(expectedConventionEquality, ptr1.ByRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.ByRef.Signature.GetCallingConventionModifiers())); 2104Assert.Equal(expectedConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2105Assert.Equal(expectedConventionEquality, ptr1.ByRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.ByRef.Signature.GetCallingConventionModifiers())); 2160Assert.Equal(expectedTypeConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2161Assert.Equal(expectedRefConventionEquality, ptr1.ByRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.ByRef.Signature.GetCallingConventionModifiers()));
Symbols\Retargeting\RetargetingTests.cs (12)
867ptrOriginal.Signature.ReturnType, 868ptrRetargeted.Signature.ReturnType); 870getModifierTypeSymbol(ptrOriginal.Signature.RefCustomModifiers), 871getModifierTypeSymbol(ptrRetargeted.Signature.RefCustomModifiers)); 873getModifierTypeSymbol(ptrOriginal.Signature.ReturnTypeWithAnnotations.CustomModifiers), 874getModifierTypeSymbol(ptrRetargeted.Signature.ReturnTypeWithAnnotations.CustomModifiers)); 876Assert.Equal(2, ptrOriginal.Signature.ParameterCount); 877Assert.Equal(2, ptrRetargeted.Signature.ParameterCount); 879var param1Original = ptrOriginal.Signature.Parameters[0]; 880var param2Original = ptrOriginal.Signature.Parameters[1]; 881var param1Retargeted = ptrRetargeted.Signature.Parameters[0]; 882var param2Retargeted = ptrRetargeted.Signature.Parameters[1];
Microsoft.CodeAnalysis.CSharp.Test.Utilities (4)
FunctionPointerUtilities.cs (4)
20verifySignature(symbol.Signature); 21foreach (var param in symbol.Signature.Parameters) 23verifyParameter(param, symbol.Signature); 275var signature = funcPtr.Signature;