public JNode VisitNamedExpression(NamedExpression node) { var name = new JJsonMember { Name = node.Name }; if (name.Name.IsNullOrEmpty()) { throw new NotImplementedException(); //if (d.expression.e == cs_node.n_simple_name) // name.Name = ((CsSimpleName)d.expression).identifier.identifier; //else if (d.expression.e == cs_node.n_primary_expression_member_access) // name.Name = ((CsPrimaryExpressionMemberAccess)d.expression).identifier.identifier; } var value = VisitExpression(node.Expression); var ce = node.GetParentType(); var nativeJson = JMeta.UseNativeJsons(ce.GetDefinitionOrArrayType(Compiler)); if (!nativeJson) { name.Name = "get_" + name.Name; value = new JFunction { Block = new JBlock { Statements = new List <JStatement> { new JReturnStatement { Expression = value } } } }; } return(new JJsonNameValue { Name = name, Value = value }); }
/// <summary> /// Indicates that object is IProperty that uses getter setter functions, and not native fields /// </summary> /// <param name="entity"></param> /// <returns></returns> bool IsEntityFunctionProperty(IEntity entity, ResolveResult scope) { var pe = entity as IProperty; if (pe != null) { var ce = pe.DeclaringType; if (ce != null && ce.Kind == TypeKind.Anonymous) { var ce2 = scope.GetParentType(); if (ce2 != null && JMeta.UseNativeJsons(ce2)) { return(false); } } return(!JMeta.IsNativeField(pe) && !JMeta.UseNativeIndexer(pe)); // && !Sk.IsNativeProperty(pe); } return(false); }