java getrecord_Java TCType.getRecord方法代码示例

import com.fujitsu.vdmj.tc.types.TCType; //导入方法依赖的package包/类

@Override

public TCType typeCheck(Environment env, TCTypeList qualifiers)

{

TCType type = object.typeCheck(env, qualifiers);

TCTypeSet result = new TCTypeSet();

boolean unique = !type.isUnion(location);

if (type.isClass(env))

{

TCClassType ctype = type.getClassType(env);

if (classname == null)

{

field = new TCNameToken(

fieldname.getLocation(), ctype.name.getName(), fieldname.getName(), false);

}

else

{

field = classname;

}

field.setTypeQualifier(qualifiers);

TCDefinition fdef = ctype.classdef.findName(field, NameScope.NAMESANDSTATE);

if (fdef == null)

{

concern(unique, 3260, "Unknown class member name, '" + field + "'");

result.add(new TCUnknownType(location));

}

else if (!TCClassDefinition.isAccessible(env, fdef, false))

{

concern(unique, 3260, "Inaccessible class member name, '" + field + "'");

result.add(new TCUnknownType(location));

}

else

{

result.add(fdef.getType());

}

}

if (type.isRecord(location))

{

String sname = (fieldname != null) ? fieldname.getName() : classname.toString();

TCRecordType rec = type.getRecord();

TCField rf = rec.findField(sname);

if (rf == null)

{

concern(unique, 3261, "Unknown field name, '" + sname + "'");

result.add(new TCUnknownType(location));

}

else

{

result.add(rf.type);

}

}

if (result.isEmpty())

{

report(3262, "Field assignment is not of a class or record type");

detail2("Expression", object, "Type", type);

return new TCUnknownType(location);

}

return result.getType(location);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值