1 write to Signature
Microsoft.CodeAnalysis.CSharp (1)
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (1)
69Signature = signature;
199 references to Signature
Microsoft.CodeAnalysis.CSharp (107)
Binder\Binder.ValueChecks.cs (5)
881return CheckMethodReturnValueKind(((BoundFunctionPointerInvocation)expr).FunctionPointer.Signature, 3551var methodSymbol = ptrInvocation.FunctionPointer.Signature; 3997FunctionPointerMethodSymbol signature = functionPointerInvocation.FunctionPointer.Signature; 4271var ptrSymbol = ptrInvocation.FunctionPointer.Signature; 5026var ptrSymbol = ptrInvocation.FunctionPointer.Signature;
Binder\Binder_Conversions.cs (2)
2287delegateMethod = functionPointerType.Signature; 2835FunctionPointerTypeSymbol { Signature: { } signature } => signature,
Binder\Binder_Crefs.cs (1)
744MethodSymbol signature = ((FunctionPointerTypeSymbol)type).Signature;
Binder\Binder_Invocation.cs (4)
2456methodsBuilder.Add(funcPtr.Signature); 2480returnRefKind: funcPtr.Signature.RefKind); 2488funcPtr.Signature.ReturnType, 2507funcPtr.Signature.ReturnType,
Binder\RefSafetyAnalysis.cs (1)
928var 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)
120destination.Signature, 122new CallingConventionInfo(destination.Signature.CallingConvention, destination.Signature.GetCallingConventionModifiers()), 126ToConversion(resolution.OverloadResolutionResult, resolution.MethodGroup, destination.Signature.ParameterCount); 280if (type is FunctionPointerTypeSymbol { Signature: { } signature })
Binder\Semantics\Conversions\ConversionsBase.cs (2)
3376if (!(source is FunctionPointerTypeSymbol { Signature: { } sourceSig }) 3377|| !(destination is FunctionPointerTypeSymbol { Signature: { } destinationSig }))
Binder\Semantics\OverloadResolution\MethodTypeInference.cs (8)
1086FunctionPointerTypeSymbol f => f.Signature, 1467FunctionPointerTypeSymbol f => (f.Signature, true), 1893else if (source.Type is FunctionPointerTypeSymbol { Signature: { ParameterCount: int sourceParameterCount } sourceSignature } && 1894target.Type is FunctionPointerTypeSymbol { Signature: { ParameterCount: int targetParameterCount } targetSignature } && 2427if (source is not FunctionPointerTypeSymbol { Signature: { } sourceSignature } || target is not FunctionPointerTypeSymbol { Signature: { } targetSignature }) 2777if (source is not FunctionPointerTypeSymbol { Signature: { } sourceSignature } || target is not FunctionPointerTypeSymbol { Signature: { } targetSignature })
Binder\Semantics\OverloadResolution\OverloadResolutionResult.cs (1)
549ReportWrongCallingConvention(location, diagnostics, symbols, firstSupported, ((FunctionPointerTypeSymbol)delegateOrFunctionPointerType).Signature);
CodeGen\EmitAddress.cs (1)
123var funcPtrRefKind = funcPtrInvocation.FunctionPointer.Signature.RefKind;
CodeGen\EmitExpression.cs (5)
2223return ((BoundFunctionPointerInvocation)receiver).FunctionPointer.Signature.RefKind != RefKind.None; 2942Debug.Assert(left.FunctionPointer.Signature.RefKind != RefKind.None); 3138Debug.Assert(((BoundFunctionPointerInvocation)expression).FunctionPointer.Signature.RefKind != RefKind.None); 4028FunctionPointerMethodSymbol method = ptrInvocation.FunctionPointer.Signature; 4030var 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)
395var sig = symbol.Signature; 679var sig = type.Signature; 680var otherSig = other.Signature; 918var sig = symbol.Signature;
Emitter\Model\FunctionPointerTypeSymbolAdapter.cs (1)
32Interlocked.CompareExchange(ref _lazySignature, new FunctionPointerMethodSignature(AdaptedFunctionPointerTypeSymbol.Signature), null);
FlowAnalysis\AbstractFlowPass.cs (1)
3781VisitArguments(node.Arguments, node.ArgumentRefKindsOpt, node.FunctionPointer.Signature, default, false);
FlowAnalysis\NullableWalker.cs (3)
9359FunctionPointerTypeSymbol { Signature: { Parameters: { } parameters } signature } => (signature, parameters), 12903node.FunctionPointer.Signature, 12909var returnTypeWithAnnotations = node.FunctionPointer.Signature.ReturnTypeWithAnnotations;
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (1)
775Debug.Assert(((BoundFunctionPointerInvocation)originalLHS).FunctionPointer.Signature.RefKind != RefKind.None);
Lowering\LocalRewriter\LocalRewriter_FunctionPointerInvocation.cs (1)
22MethodSymbol functionPointer = node.FunctionPointer.Signature;
Operations\CSharpOperationFactory_Methods.cs (1)
253return DeriveArguments(boundFunctionPointerInvocation.FunctionPointer.Signature,
Symbols\AbstractTypeMap.cs (6)
241var substitutedReturnType = f.Signature.ReturnTypeWithAnnotations.SubstituteType(this); 242var refCustomModifiers = f.Signature.RefCustomModifiers; 245var parameterTypesWithAnnotations = f.Signature.ParameterTypesWithAnnotations; 250var paramCount = f.Signature.Parameters.Length; 255foreach (var param in f.Signature.Parameters) 277|| !f.Signature.ReturnTypeWithAnnotations.IsSameAs(substitutedReturnType)
Symbols\Compilation_WellKnownMembers.cs (1)
1004var sig = funcPtr.Signature;
Symbols\FunctionPointers\FunctionPointerTypeSymbol.cs (15)
65=> new FunctionPointerTypeSymbol(Signature.SubstituteParameterSymbols(substitutedReturnType, substitutedParameterTypes, refCustomModifiers, paramRefCustomModifiers)); 113return Signature.Equals(other.Signature, compareKind); 118return Hash.Combine(1, Signature.GetHashCode()); 134Signature.AddNullableTransforms(transforms); 139var newSignature = Signature.ApplyNullableTransforms(defaultTransformFlag, transforms, ref position); 140bool madeChanges = (object)Signature != newSignature; 147UseSiteInfo<AssemblySymbol> fromSignature = Signature.GetUseSiteInfo(); 149if (fromSignature.DiagnosticInfo?.Code == (int)ErrorCode.ERR_BindToBogus && fromSignature.DiagnosticInfo.Arguments.AsSingleton() == (object)Signature) 159return Signature.GetUnificationUseSiteDiagnosticRecursive(ref result, owner, ref checkedTypes); 165var mergedSignature = Signature.MergeEquivalentTypes(((FunctionPointerTypeSymbol)other).Signature, variance); 166if ((object)mergedSignature != Signature) 176var substitutedSignature = Signature.SetNullabilityForReferenceTypes(transform); 177if ((object)Signature != substitutedSignature)
Symbols\Metadata\PE\DynamicTypeDecoder.cs (1)
352var sig = type.Signature;
Symbols\Metadata\PE\NativeIntegerTypeDecoder.cs (6)
175if (TransformTypeWithAnnotations(type.Signature.ReturnTypeWithAnnotations) is not { } transformedReturnType) 183if (type.Signature.ParameterCount > 0) 185var builder = ArrayBuilder<TypeWithAnnotations>.GetInstance(type.Signature.ParameterCount); 186foreach (var param in type.Signature.Parameters) 203transformedParameterTypes = type.Signature.ParameterTypesWithAnnotations; 208if (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\Source\SourceNamedTypeSymbol_Extension.cs (8)
314var callingConvention = functionPointer.Signature.CallingConvention switch 322_ => throw ExceptionUtilities.UnexpectedValue(functionPointer.Signature.CallingConvention) 327appendType(functionPointer.Signature.ReturnType, builder); 328if (functionPointer.Signature.RefKind != RefKind.None) 331appendModifiers(functionPointer.Signature.RefCustomModifiers, builder); 332Debug.Assert(functionPointer.Signature.ReturnTypeWithAnnotations.CustomModifiers.IsEmpty); // We're only dealing with source function pointers 336appendModifiers(functionPointer.Signature.ReturnTypeWithAnnotations.CustomModifiers, builder); 340var parameters = functionPointer.Signature.Parameters;
Symbols\TypeSymbolExtensions.cs (7)
587if (type is FunctionPointerTypeSymbol { Signature: { Parameters: var functionPointerParameters } }) 956MethodSymbol currentPointer = type.Signature; 2045var returnType = funcPtrType.Signature.ReturnTypeWithAnnotations; 2050if (funcPtrType.Signature.ParameterCount > 0) 2052var paramsBuilder = ArrayBuilder<TypeWithAnnotations>.GetInstance(funcPtrType.Signature.ParameterCount); 2054foreach (var param in funcPtrType.Signature.Parameters) 2068paramTypes = 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); 2551Assert.Equal(i1, returnType.Signature.ReturnType); 2552Assert.Equal(i2, returnType.Signature.ParameterTypesWithAnnotations[0].Type); 7062verifyArray(funcPtr.Signature.Parameters.Single().Type); 7066verifyArray(funcPtr.Signature.Parameters.Single().Type); 7070verifyArray(funcPtr.Signature.ReturnType); 7074verifyArray(funcPtr.Signature.ReturnType); 7690Assert.Empty(funcPtrWithTestOnReturn.Signature.GetCallingConventionModifiers()); 7691Assert.Empty(funcPtrWithTestOnRef.Signature.GetCallingConventionModifiers()); 7775Assert.Empty(funcPtrWithTestOnReturn.Signature.GetCallingConventionModifiers()); 7776Assert.Empty(funcPtrWithTestOnRef.Signature.GetCallingConventionModifiers());
Microsoft.CodeAnalysis.CSharp.Emit3.UnitTests (10)
RefReadonlyParameterTests.cs (10)
921var p2 = ptr.Signature.Parameters.Single(); 973var p = ptr.Signature.Parameters.Single(); 1070var p = ptr.Signature.Parameters.Single(); 1122var p = ptr.Signature.Parameters.Single(); 1175var p = ptr.Signature.Parameters.Single(); 1224var p = ptr.Signature.Parameters.Single(); 1252var p2 = ptr.Signature.Parameters.Single(); 1443var p = ((FunctionPointerTypeSymbol)f.Type).Signature.Parameters.Single(); 1501var p2 = ptr.Signature.Parameters.Single(); 1524VerifyRefReadonlyParameter(symbol!.Signature.Parameters.Single(), customModifiers: VerifyModifiers.RequiresLocation);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (4)
Semantics\FunctionPointerTests.cs (2)
2133funcPtrType.Signature.GetCallingConventionModifiers().Select(c => ((CSharpCustomModifier)c).ModifierSymbol.ToTestDisplayString())); 3945Assert.False(type.Signature.IsVararg);
Semantics\RefFieldTests.cs (2)
11284var methods = decls.Select(d => ((FunctionPointerTypeSymbol)model.GetDeclaredSymbol(d).GetSymbol<LocalSymbol>().Type).Signature).ToArray(); 25409((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); 2035Assert.Equal(expectedConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2036Assert.Equal(expectedConventionEquality, ptr1.ByRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.ByRef.Signature.GetCallingConventionModifiers())); 2103Assert.Equal(expectedConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2104Assert.Equal(expectedConventionEquality, ptr1.ByRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.ByRef.Signature.GetCallingConventionModifiers())); 2159Assert.Equal(expectedTypeConventionEquality, ptr1.NoRef.Signature.GetCallingConventionModifiers().SetEquals(ptr2.NoRef.Signature.GetCallingConventionModifiers())); 2160Assert.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); 277var signature = funcPtr.Signature;