Mono.CSharp.Fixed.StringEmitter.DoResolve C# (CSharp) Method

DoResolve() protected method

protected DoResolve ( ResolveContext rc ) : Mono.CSharp.Expression
rc ResolveContext
return Mono.CSharp.Expression
			protected override Expression DoResolve (ResolveContext rc)
			{
				pinned_string = new LocalVariable (vi.Block, "$pinned",
					LocalVariable.Flags.FixedVariable | LocalVariable.Flags.CompilerGenerated | LocalVariable.Flags.Used,
					vi.Location);

				pinned_string.Type = TypeManager.string_type;

				if (TypeManager.int_get_offset_to_string_data == null) {
					var helper = rc.Module.PredefinedTypes.RuntimeHelpers.Resolve (loc);
					if (helper != null) {
						TypeManager.int_get_offset_to_string_data = TypeManager.GetPredefinedProperty (helper,
							"OffsetToStringData", pinned_string.Location, TypeManager.int32_type);
					}
				}

				eclass = ExprClass.Variable;
				type = TypeManager.int32_type;
				return this;
			}