if(exp._class)
FreeSpecifier(exp._class);
break;
+ case classDataExp:
+ if(exp.classData.id)
+ FreeIdentifier(exp.classData.id);
+ break;
}
if(freePointer)
{
case accessOverrideClassDef:
break;
case classDataClassDef:
+ {
+ if(def.decl)
+ FreeDeclaration(def.decl);
break;
+ }
case classDesignerClassDef:
+ {
+ delete def.designer;
break;
+ }
case classFixedClassDef:
break;
case classNoExpansionClassDef:
FreeInitializer(def.initializer);
break;
case designerDefaultPropertyClassDef:
+ {
+ if(def.defaultProperty)
+ FreeIdentifier(def.defaultProperty);
break;
+ }
case memberAccessClassDef:
break;
case propertyWatchClassDef:
+ {
+ if(def.propertyWatch)
+ FreePropertyWatch(def.propertyWatch);
break;
+ }
}
delete def;
}
DataMember dataMember;
Method method;
ClassTemplateParameter param;
+ ClassProperty classProp;
if(_class.dataType)
{
{ ListAdd((yyvsp[-2].list), (yyvsp[0].exp)); ;}
break;
+ case 625:
+#line 1986 "grammar.y"
+ { FreeList((yyvsp[0].list), FreeExpression); ;}
+ break;
+
+ case 626:
+#line 1987 "grammar.y"
+ { FreeList((yyvsp[0].list), FreeExpression); ;}
+ break;
+
+ case 627:
+#line 1988 "grammar.y"
+ { FreeList((yyvsp[0].list), FreeExpression); ;}
+ break;
+
case 628:
#line 1992 "grammar.y"
{ (yyval.list) = MkList(); ListAdd((yyval.list), (yyvsp[0].exp)); ;}
}
/* Line 1037 of yacc.c. */
-#line 17626 "grammar.ec"
+#line 17641 "grammar.ec"
\f
yyvsp -= yylen;
yyssp -= yylen;
| expression ',' error
| expression_error ',' error
| expression error
- | expression expression
- | expression_error expression
- | expression expression_error
+ | expression expression { FreeList($2, FreeExpression); }
+ | expression_error expression { FreeList($2, FreeExpression); }
+ | expression expression_error { FreeList($2, FreeExpression); }
;
expression_anon_inst_error:
// If first expression is constant, try to match that first
if(CheckExpressionType(exp.op.exp1, exp.op.exp1.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp1.destType;
if(exp.op.exp1.destType) exp.op.exp1.destType.refCount++;
success = true;
}
else if(CheckExpressionType(exp.op.exp2, exp.op.exp2.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp2.destType;
if(exp.op.exp2.destType) exp.op.exp2.destType.refCount++;
success = true;
{
if(CheckExpressionType(exp.op.exp2, exp.op.exp2.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp2.destType;
if(exp.op.exp2.destType) exp.op.exp2.destType.refCount++;
success = true;
}
else if(CheckExpressionType(exp.op.exp1, exp.op.exp1.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp1.destType;
if(exp.op.exp1.destType) exp.op.exp1.destType.refCount++;
success = true;
CheckExpressionType(exp.op.exp2, exp.op.exp2.destType, false);
type2 = exp.op.exp2.destType;
+
exp.expType = type2;
type2.refCount++;
}
{
if(CheckExpressionType(exp.op.exp1, exp.op.exp2.expType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp1.expType;
if(exp.op.exp2.expType) exp.op.exp1.expType.refCount++;
valid = true;
}
}
+
else if(type2 && (type2.kind == classType && type2._class && type2._class.registered && type2._class.registered.type == enumClass && exp.op.exp1.expType))
{
if(CheckExpressionType(exp.op.exp2, exp.op.exp1.expType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp2.expType;
if(exp.op.exp2.expType) exp.op.exp2.expType.refCount++;
valid = true;
if(CheckExpressionType(exp.op.exp2, exp.op.exp2.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp2.destType;
if(exp.op.exp2.destType) exp.op.exp2.destType.refCount++;
}
if(CheckExpressionType(exp.op.exp1, exp.op.exp1.destType, false))
{
+ if(exp.expType) FreeType(exp.expType);
exp.expType = exp.op.exp1.destType;
if(exp.op.exp1.destType) exp.op.exp1.destType.refCount++;
}