diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java index 1be49c6..c60ee1e 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractionAnalyzer.java @@ -46,13 +46,17 @@ String dstClassName = variable.getValueClassName(); TracePoint before = variable.getBeforeTracePoint(); before = before.duplicate(); - before.stepNext(); Reference reference = new Reference(srcId, dstId, srcClassName, dstClassName); - reference.setCollection(srcClassName.startsWith("java.util.")); // true�ɂ���ƃR���N�V�����ȊO���o�ł��Ȃ��Ȃ� + DeltaRelatedAliasCollector aliasCollector = new DeltaRelatedAliasCollector(srcId, dstId); + if (before.getStatement() instanceof FieldUpdate) { + extractedStructure = deltaExtractor.extract(before.duplicate(), aliasCollector); + } else { + before.stepNext(); + reference.setCollection(srcClassName.startsWith("java.util.")); // true�ɂ���ƃR���N�V�����ȊO���o�ł��Ȃ��Ȃ� + extractedStructure = deltaExtractor.extract(reference, before.duplicate(), aliasCollector); + } // �f���^���o - DeltaRelatedAliasCollector aliasCollector = new DeltaRelatedAliasCollector(srcId, dstId); - extractedStructure = deltaExtractor.extract(reference, before.duplicate(), aliasCollector); MethodExecution creationCallTree = extractedStructure.getCreationCallTree(); MethodExecution coordinator = extractedStructure.getCoordinator(); TracePoint bottomPoint = findTracePoint(reference, creationCallTree, before.getStatement().getTimeStamp()); diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java index 944edf6..9e9e56e 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaExtractorJSON.java @@ -120,13 +120,13 @@ if (ownerObjectId.equals(thisObjectId)) { // �t�B�[���h�Q�Ƃ̏ꍇ - removeList.add(refObjectId); - removeList.add(thisObjectId); // ��ň�U�AthisObject ����菜�� - if (existsInFields == 0) { + if (!removeList.contains(refObjectId)) { // ��ԋ߂��t�B�[���h�Q�Ƃ�D�悷�� + removeList.add(refObjectId); + removeList.add(thisObjectId); // ��ň�U�AthisObject ����菜�� aliasList.put(refObjectId, new Alias(Alias.AliasType.FIELD, 0, refObjectId, tracePoint.duplicate())); + existsInFields++; // set�������get�����o���Ă���”\�������� } - existsInFields++; // set�������get�����o���Ă���”\�������� } else { // ���ڎQ�Ƃ̏ꍇ boolean isSrcSideChanged = false; diff --git a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java index f4e5890..532ee52 100644 --- a/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java +++ b/src/org/ntlab/traceDebugger/analyzerProvider/DeltaMarkerManager.java @@ -802,7 +802,6 @@ final MethodInvocation mi = (MethodInvocation)statement; final MethodExecution calledMe = mi.getCalledMethodExecution(); final int index = alias.getIndex(); - calledMe.getArguments().get(alias.getIndex()); visitor = new MyASTVisitor() { @Override public boolean visit(org.eclipse.jdt.core.dom.MethodInvocation node) {