Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ CompileMemberInit()

void System.Linq.Expressions.Interpreter.LightCompiler.CompileMemberInit ( ReadOnlyCollection< MemberBinding > bindings)
inlineprivate

Definition at line 2075 of file LightCompiler.cs.

2076 {
2077 foreach (MemberBinding binding in bindings)
2078 {
2079 switch (binding.BindingType)
2080 {
2081 case MemberBindingType.Assignment:
2083 CompileMemberAssignment(asVoid: true, ((MemberAssignment)binding).Member, ((MemberAssignment)binding).Expression, forBinding: true);
2084 break;
2085 case MemberBindingType.ListBinding:
2086 {
2087 MemberListBinding memberListBinding = (MemberListBinding)binding;
2090 CompileListInit(memberListBinding.Initializers);
2092 break;
2093 }
2094 case MemberBindingType.MemberBinding:
2095 {
2096 MemberMemberBinding memberMemberBinding = (MemberMemberBinding)binding;
2099 if (memberMemberBinding.Member is PropertyInfo && memberType.IsValueType)
2100 {
2101 throw Error.CannotAutoInitializeValueTypeMemberThroughProperty(memberMemberBinding.Bindings);
2102 }
2106 break;
2107 }
2108 }
2109 }
2110 }
void CompileMember(Expression from, MemberInfo member, bool forBinding)
void CompileMemberAssignment(BinaryExpression node, bool asVoid)
void CompileMemberInit(ReadOnlyCollection< MemberBinding > bindings)
void CompileListInit(ReadOnlyCollection< ElementInit > initializers)

References System.Linq.Expressions.Interpreter.LightCompiler._instructions, System.Linq.Expressions.Error.CannotAutoInitializeValueTypeMemberThroughProperty(), System.Linq.Expressions.Interpreter.LightCompiler.CompileListInit(), System.Linq.Expressions.Interpreter.LightCompiler.CompileMember(), System.Linq.Expressions.Interpreter.LightCompiler.CompileMemberAssignment(), System.Linq.Expressions.Interpreter.LightCompiler.CompileMemberInit(), System.Linq.Expressions.Interpreter.InstructionList.EmitDup(), System.Linq.Expressions.Interpreter.InstructionList.EmitPop(), and System.Linq.Expressions.Interpreter.LightCompiler.GetMemberType().

Referenced by System.Linq.Expressions.Interpreter.LightCompiler.CompileMemberInit(), and System.Linq.Expressions.Interpreter.LightCompiler.CompileMemberInitExpression().