You've already forked v8-code-style
mirror of
https://github.com/1C-Company/v8-code-style.git
synced 2025-07-17 05:02:20 +02:00
Адаптация языковых проверок под новый API
This commit is contained in:
@ -18,6 +18,7 @@ Bundle-RequiredExecutionEnvironment: JavaSE-11
|
||||
Automatic-Module-Name: com.e1c.v8codestyle.bsl
|
||||
Bundle-ActivationPolicy: lazy
|
||||
Import-Package: com._1c.g5.v8.bm.core;version="[8.0.0,9.0.0)",
|
||||
com._1c.g5.v8.bm.integration;version="[11.0.0,12.0.0)",
|
||||
com._1c.g5.v8.dt.bsl.comment;version="[3.0.0,4.0.0)",
|
||||
com._1c.g5.v8.dt.bsl.common;version="[6.0.0,7.0.0)",
|
||||
com._1c.g5.v8.dt.bsl.contextdef;version="[2.0.0,3.0.0)",
|
||||
|
@ -24,16 +24,23 @@ import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.emf.ecore.util.EcoreUtil;
|
||||
import org.eclipse.xtext.EcoreUtil2;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.bm.integration.IBmModel;
|
||||
import com._1c.g5.v8.dt.bsl.model.BslIndexPackage;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.Expression;
|
||||
import com._1c.g5.v8.dt.bsl.model.FeatureEntry;
|
||||
import com._1c.g5.v8.dt.bsl.model.Module;
|
||||
import com._1c.g5.v8.dt.bsl.model.ModuleContextDefIndex;
|
||||
import com._1c.g5.v8.dt.bsl.model.OperatorStyleCreator;
|
||||
import com._1c.g5.v8.dt.bsl.model.StaticFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.StringLiteral;
|
||||
import com._1c.g5.v8.dt.bsl.resource.DynamicFeatureAccessComputer;
|
||||
import com._1c.g5.v8.dt.bsl.resource.ExportMethodProvider;
|
||||
import com._1c.g5.v8.dt.common.StringUtils;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IDtProject;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.DerivedProperty;
|
||||
import com._1c.g5.v8.dt.mcore.Environmental;
|
||||
import com._1c.g5.v8.dt.mcore.Method;
|
||||
@ -42,6 +49,7 @@ import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.metadata.mdclass.CommonModule;
|
||||
import com._1c.g5.v8.dt.metadata.mdclass.MdClassPackage;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.BasicCheck;
|
||||
@ -60,11 +68,9 @@ import com.google.inject.Inject;
|
||||
public class NotifyDescriptionToServerProcedureCheck
|
||||
extends BasicCheck
|
||||
{
|
||||
private static final String CD_ROOT = "/0/@contextDef"; //$NON-NLS-1$
|
||||
|
||||
private static final String CHECK_ID = "notify-description-to-server-procedure"; //$NON-NLS-1$
|
||||
|
||||
private static final String BSLCD = "bslcd"; //$NON-NLS-1$
|
||||
private static final String BSL = "bsl"; //$NON-NLS-1$
|
||||
|
||||
private static final String THIS_OBJECT = "ThisObject"; //$NON-NLS-1$
|
||||
|
||||
@ -76,6 +82,13 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
|
||||
private final ExportMethodProvider exportMethodProvider;
|
||||
|
||||
private final IResourceLookup resourceLookup;
|
||||
|
||||
private final INamingService namingService;
|
||||
|
||||
private final IBmModelManager bmModelManager;
|
||||
|
||||
|
||||
/**
|
||||
* Instantiates a new notify description to server procedure check.
|
||||
*
|
||||
@ -84,11 +97,15 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
*/
|
||||
@Inject
|
||||
public NotifyDescriptionToServerProcedureCheck(DynamicFeatureAccessComputer dynamicFeatureAccessComputer,
|
||||
ExportMethodProvider exportMethodProvider)
|
||||
ExportMethodProvider exportMethodProvider, IResourceLookup resourceLookup, INamingService namingService,
|
||||
IBmModelManager bmModelManager)
|
||||
{
|
||||
super();
|
||||
this.dynamicFeatureAccessComputer = dynamicFeatureAccessComputer;
|
||||
this.exportMethodProvider = exportMethodProvider;
|
||||
this.resourceLookup = resourceLookup;
|
||||
this.namingService = namingService;
|
||||
this.bmModelManager = bmModelManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -130,14 +147,27 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
return;
|
||||
}
|
||||
|
||||
String contextDefUri = getBslContexDefUri(osc);
|
||||
String contextDefUriAsString = getBslModuleUri(osc);
|
||||
|
||||
if (monitor.isCanceled() || contextDefUri == null)
|
||||
if (monitor.isCanceled() || contextDefUriAsString == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Collection<Method> methods = exportMethodProvider.getMockMethods(contextDefUri, methodName, osc);
|
||||
URI contextDefUri = URI.createURI(contextDefUriAsString, true);
|
||||
|
||||
IDtProject project = resourceLookup.getDtProject(contextDefUri);
|
||||
String contextDefIndexFqn = namingService.getDependentObjectFqnAsString(contextDefUri,
|
||||
BslIndexPackage.Literals.MODULE_CONTEXT_DEF_INDEX);
|
||||
IBmModel model = bmModelManager.getModel(project);
|
||||
IBmTransaction bmTransaction = model.getEngine().getCurrentTransaction();
|
||||
ModuleContextDefIndex index = (ModuleContextDefIndex)bmTransaction.getTopObjectByFqn(contextDefIndexFqn);
|
||||
if (index == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Collection<Method> methods = exportMethodProvider.getMockMethods(index.getContextDef(), methodName, osc);
|
||||
if (methods.isEmpty())
|
||||
{
|
||||
resultAceptor.addIssue(
|
||||
@ -175,7 +205,7 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getBslContexDefUri(OperatorStyleCreator osc)
|
||||
private String getBslModuleUri(OperatorStyleCreator osc)
|
||||
{
|
||||
List<Expression> params = osc.getParams();
|
||||
|
||||
@ -184,18 +214,18 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
Expression moduleParam = params.get(1);
|
||||
if (moduleParam instanceof StaticFeatureAccess)
|
||||
{
|
||||
return getBslContexDefUri((StaticFeatureAccess)moduleParam);
|
||||
return getBslModuleUri((StaticFeatureAccess)moduleParam);
|
||||
}
|
||||
else if (moduleParam instanceof DynamicFeatureAccess)
|
||||
{
|
||||
return getBslContexDefUri((DynamicFeatureAccess)moduleParam);
|
||||
return getBslModuleUri((DynamicFeatureAccess)moduleParam);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private String getBslContexDefUri(StaticFeatureAccess object)
|
||||
private String getBslModuleUri(StaticFeatureAccess object)
|
||||
{
|
||||
URI uri = null;
|
||||
if (object.getName().equals(THIS_OBJECT) || object.getName().equals(THIS_OBJECT_RU))
|
||||
@ -206,23 +236,23 @@ public class NotifyDescriptionToServerProcedureCheck
|
||||
{
|
||||
uri = getCommonModuleUri(object);
|
||||
}
|
||||
return constructBslCdUri(uri);
|
||||
return constructBslUri(uri);
|
||||
}
|
||||
|
||||
private String getBslContexDefUri(DynamicFeatureAccess object)
|
||||
private String getBslModuleUri(DynamicFeatureAccess object)
|
||||
{
|
||||
URI uri = getCommonModuleUri(object);
|
||||
|
||||
return constructBslCdUri(uri);
|
||||
return constructBslUri(uri);
|
||||
}
|
||||
|
||||
private String constructBslCdUri(URI uri)
|
||||
private String constructBslUri(URI uri)
|
||||
{
|
||||
if (uri == null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
return uri.trimFragment().trimFileExtension().appendFileExtension(BSLCD).appendFragment(CD_ROOT).toString();
|
||||
return uri.trimFragment().trimFileExtension().appendFileExtension(BSL).toString();
|
||||
}
|
||||
|
||||
private URI getCommonModuleUri(DynamicFeatureAccess object)
|
||||
|
@ -58,6 +58,11 @@ public class RefLinkPartCheck
|
||||
|
||||
private final IScopeProvider scopeProvider;
|
||||
|
||||
/**
|
||||
* Instantiates a new reference link part check.
|
||||
*
|
||||
* @param scopeProvider the scope provider service, cannot be {@code null}.
|
||||
*/
|
||||
@Inject
|
||||
public RefLinkPartCheck(IResourceLookup resourceLookup, INamingService namingService,
|
||||
IBmModelManager bmModelManager, IScopeProvider scopeProvider)
|
||||
@ -97,7 +102,7 @@ public class RefLinkPartCheck
|
||||
&& object.getParent() instanceof Description && linkPart.getPartsWithOffset().size() == 1;
|
||||
|
||||
if (!isWebLink(linkPart) && !isSingleWordInDescription
|
||||
&& getLinkPartLastObject(linkPart, scopeProvider, root.getMethod()).isEmpty())
|
||||
&& getLinkPartLastObject(linkPart, scopeProvider, root.getMethod(), typeComputationContext).isEmpty())
|
||||
{
|
||||
resultAceptor.addIssue(Messages.RefLinkPartCheck_Link_referenced_to_unexisting_object,
|
||||
linkPart.getLineNumber(), linkPart.getLinkTextOffset(), linkPart.getLinkText().length());
|
||||
|
@ -23,18 +23,21 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.xtext.EcoreUtil2;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.Expression;
|
||||
import com._1c.g5.v8.dt.bsl.model.FeatureEntry;
|
||||
import com._1c.g5.v8.dt.bsl.model.util.BslUtil;
|
||||
import com._1c.g5.v8.dt.common.StringUtils;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.Environmental;
|
||||
import com._1c.g5.v8.dt.mcore.TypeItem;
|
||||
import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -65,9 +68,9 @@ public abstract class AbstractDynamicFeatureAccessTypeCheck
|
||||
* @param qualifiedNameConverter the qualified name converter service, cannot be {@code null}.
|
||||
*/
|
||||
protected AbstractDynamicFeatureAccessTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -118,7 +121,7 @@ public abstract class AbstractDynamicFeatureAccessTypeCheck
|
||||
|
||||
@Override
|
||||
protected final void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
DynamicFeatureAccess fa = (DynamicFeatureAccess)object;
|
||||
if (StringUtils.isBlank(fa.getName()))
|
||||
@ -127,8 +130,9 @@ public abstract class AbstractDynamicFeatureAccessTypeCheck
|
||||
}
|
||||
|
||||
boolean isMethod = BslUtil.getInvocation(fa) != null;
|
||||
if (isMethod == isCheckDfaMethod() && (isMethod && isEmptySource(fa) || !isMethod && isEmptyTypes(fa))
|
||||
&& !monitor.isCanceled() && !isSkipSourceType(fa, parameters, monitor))
|
||||
if (isMethod == isCheckDfaMethod()
|
||||
&& (isMethod && isEmptySource(fa) || !isMethod && isEmptyTypes(fa, bmTransaction)) && !monitor.isCanceled()
|
||||
&& !isSkipSourceType(fa, parameters, monitor))
|
||||
{
|
||||
String message = getErrorMessage(fa);
|
||||
|
||||
|
@ -24,6 +24,7 @@ import java.util.TreeSet;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import org.eclipse.core.resources.IProject;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.common.util.URI;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.emf.ecore.util.EcoreUtil;
|
||||
@ -35,6 +36,8 @@ import org.eclipse.xtext.resource.IResourceServiceProvider;
|
||||
import org.eclipse.xtext.scoping.IScope;
|
||||
import org.eclipse.xtext.scoping.IScopeProvider;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.bm.integration.IBmModel;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.BslMultiLineCommentDocumentationProvider;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
@ -49,6 +52,8 @@ import com._1c.g5.v8.dt.bsl.model.Variable;
|
||||
import com._1c.g5.v8.dt.bsl.resource.DynamicFeatureAccessComputer;
|
||||
import com._1c.g5.v8.dt.bsl.resource.TypesComputer;
|
||||
import com._1c.g5.v8.dt.bsl.typesystem.util.TypeSystemUtil;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IDtProject;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.Environmental;
|
||||
import com._1c.g5.v8.dt.mcore.McorePackage;
|
||||
@ -58,6 +63,9 @@ import com._1c.g5.v8.dt.mcore.TypeSet;
|
||||
import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.dt.core.api.platform.BmOperationContext;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.BasicCheck;
|
||||
import com.e1c.v8codestyle.internal.bsl.BslPlugin;
|
||||
|
||||
@ -77,6 +85,12 @@ public abstract class AbstractTypeCheck
|
||||
/** The resource lookup service. */
|
||||
protected final IResourceLookup resourceLookup;
|
||||
|
||||
/** The naming service. */
|
||||
protected final INamingService namingService;
|
||||
|
||||
/** BM manager service. */
|
||||
protected final IBmModelManager bmModelManager;
|
||||
|
||||
/** The BSL preferences service. */
|
||||
protected final IBslPreferences bslPreferences;
|
||||
|
||||
@ -105,10 +119,12 @@ public abstract class AbstractTypeCheck
|
||||
* @param qualifiedNameConverter the qualified name converter service, cannot be {@code null}.
|
||||
*/
|
||||
protected AbstractTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super();
|
||||
this.resourceLookup = resourceLookup;
|
||||
this.namingService = namingService;
|
||||
this.bmModelManager = bmModelManager;
|
||||
this.bslPreferences = bslPreferences;
|
||||
IResourceServiceProvider rsp =
|
||||
IResourceServiceProvider.Registry.INSTANCE.getResourceServiceProvider(URI.createURI("*.bsl")); //$NON-NLS-1$
|
||||
@ -122,13 +138,25 @@ public abstract class AbstractTypeCheck
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
|
||||
IProgressMonitor progressMonitor)
|
||||
{
|
||||
IDtProject dtProject = resourceLookup.getDtProject((EObject)object);
|
||||
IBmModel bmModel = bmModelManager.getModel(dtProject);
|
||||
check(object, resultAcceptor, parameters, bmModel.getEngine().getCurrentTransaction(), progressMonitor);
|
||||
}
|
||||
|
||||
protected abstract void check(Object object, ResultAcceptor resultAcceptor, ICheckParameters parameters,
|
||||
IBmTransaction bmTransaction, IProgressMonitor progressMonitor);
|
||||
|
||||
/**
|
||||
* Checks if the object has empty types.
|
||||
*
|
||||
* @param object the object, cannot be {@code null}.
|
||||
* @return true, if the object has empty types
|
||||
*/
|
||||
protected boolean isEmptyTypes(EObject object)
|
||||
protected boolean isEmptyTypes(EObject object, IBmTransaction bmTransaction)
|
||||
{
|
||||
Environmental envs = EcoreUtil2.getContainerOfType(object, Environmental.class);
|
||||
if (envs == null)
|
||||
@ -151,7 +179,7 @@ public abstract class AbstractTypeCheck
|
||||
|
||||
if (types.isEmpty() && object instanceof ExplicitVariable)
|
||||
{
|
||||
Collection<TypeItem> commentTypes = computeCommentTypes(object);
|
||||
Collection<TypeItem> commentTypes = computeCommentTypes(object, bmTransaction);
|
||||
return commentTypes.isEmpty();
|
||||
}
|
||||
|
||||
@ -216,13 +244,14 @@ public abstract class AbstractTypeCheck
|
||||
* @param object the object, cannot be {@code null}.
|
||||
* @return the collection of comment types, cannot return {@code null}.
|
||||
*/
|
||||
protected Collection<TypeItem> computeCommentTypes(EObject object)
|
||||
protected Collection<TypeItem> computeCommentTypes(EObject object, IBmTransaction bmTransaction)
|
||||
{
|
||||
IScope typeScope = scopeProvider.getScope(object, McorePackage.Literals.TYPE_DESCRIPTION__TYPES);
|
||||
IProject project = resourceLookup.getProject(object);
|
||||
boolean oldFormatComment = bslPreferences.getDocumentCommentProperties(project).oldCommentFormat();
|
||||
return TypeSystemUtil.computeCommentTypes(object, typeScope, scopeProvider, qualifiedNameConverter,
|
||||
commentProvider, oldFormatComment);
|
||||
commentProvider, oldFormatComment,
|
||||
new BmOperationContext(namingService, bmModelManager, bmTransaction));
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -21,12 +21,17 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.BslDocumentationComment;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.IDescriptionPart;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.TypeSection.FieldDefinition;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.dt.core.api.platform.BmOperationContext;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.settings.IssueSeverity;
|
||||
import com.e1c.g5.v8.dt.check.settings.IssueType;
|
||||
import com.e1c.v8codestyle.bsl.comment.check.FieldDefinitionTypeCheck;
|
||||
import com.e1c.v8codestyle.bsl.strict.StrictTypeUtil;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
/**
|
||||
* Checks the documentation comment {@link FieldDefinition field} that has section with types definition.
|
||||
@ -40,6 +45,18 @@ public class DocCommentFieldTypeCheck
|
||||
|
||||
private static final String CHECK_ID = "doc-comment-field-type-strict"; //$NON-NLS-1$
|
||||
|
||||
/**
|
||||
* @param resourceLookup
|
||||
* @param namingService
|
||||
* @param bmModelManager
|
||||
*/
|
||||
@Inject
|
||||
public DocCommentFieldTypeCheck(IResourceLookup resourceLookup, INamingService namingService,
|
||||
IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCheckId()
|
||||
{
|
||||
@ -62,7 +79,8 @@ public class DocCommentFieldTypeCheck
|
||||
|
||||
@Override
|
||||
protected void checkDocumentationCommentObject(IDescriptionPart object, BslDocumentationComment root,
|
||||
DocumentationCommentResultAcceptor resultAceptor, ICheckParameters parameters, IProgressMonitor monitor)
|
||||
DocumentationCommentResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
BmOperationContext typeComputationContext, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || parameters.getBoolean(PARAM_CHECK_ANNOTATION_IN_MODULE_DESCRIPTION)
|
||||
&& !StrictTypeUtil.hasStrictTypeAnnotation(root.getModule()))
|
||||
|
@ -18,7 +18,9 @@ import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
/**
|
||||
@ -41,9 +43,9 @@ public class DynamicFeatureAccessMethodNotFoundCheck
|
||||
*/
|
||||
@Inject
|
||||
public DynamicFeatureAccessMethodNotFoundCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -18,7 +18,9 @@ import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
/**
|
||||
@ -40,9 +42,9 @@ public class DynamicFeatureAccessTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public DynamicFeatureAccessTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -43,6 +43,7 @@ import com._1c.g5.v8.dt.bsl.model.Function;
|
||||
import com._1c.g5.v8.dt.bsl.model.ReturnStatement;
|
||||
import com._1c.g5.v8.dt.bsl.resource.DynamicFeatureAccessComputer;
|
||||
import com._1c.g5.v8.dt.bsl.resource.TypesComputer;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.core.platform.IV8Project;
|
||||
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
|
||||
@ -52,6 +53,8 @@ import com._1c.g5.v8.dt.mcore.TypeItem;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.dt.core.api.platform.BmOperationContext;
|
||||
import com.e1c.g5.v8.dt.bsl.check.DocumentationCommentBasicDelegateCheck;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
@ -111,9 +114,10 @@ public class FunctionCtorReturnSectionCheck
|
||||
public FunctionCtorReturnSectionCheck(IResourceLookup resourceLookup, IV8ProjectManager v8ProjectManager,
|
||||
IQualifiedNameConverter qualifiedNameConverter, IBslPreferences bslPreferences, TypesComputer typesComputer,
|
||||
DynamicFeatureAccessComputer dynamicComputer, IScopeProvider scopeProvider,
|
||||
BslMultiLineCommentDocumentationProvider commentProvider)
|
||||
BslMultiLineCommentDocumentationProvider commentProvider, INamingService namingService,
|
||||
IBmModelManager bmModelManager)
|
||||
{
|
||||
super();
|
||||
super(resourceLookup, namingService, bmModelManager);
|
||||
this.typesComputer = typesComputer;
|
||||
this.dynamicComputer = dynamicComputer;
|
||||
this.scopeProvider = scopeProvider;
|
||||
@ -148,7 +152,8 @@ public class FunctionCtorReturnSectionCheck
|
||||
|
||||
@Override
|
||||
protected void checkDocumentationCommentObject(IDescriptionPart object, BslDocumentationComment root,
|
||||
DocumentationCommentResultAcceptor resultAceptor, ICheckParameters parameters, IProgressMonitor monitor)
|
||||
DocumentationCommentResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
BmOperationContext context, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled()
|
||||
|| !(root.getMethod() instanceof Function)
|
||||
@ -173,7 +178,7 @@ public class FunctionCtorReturnSectionCheck
|
||||
boolean oldFormat = props.oldCommentFormat();
|
||||
|
||||
Collection<TypeItem> computedReturnTypes = root.computeReturnTypes(typeScope, scopeProvider,
|
||||
qualifiedNameConverter, commentProvider, oldFormat, method);
|
||||
qualifiedNameConverter, commentProvider, oldFormat, method, context);
|
||||
|
||||
Set<String> checkTypes = getCheckTypes(parameters);
|
||||
|
||||
|
@ -16,10 +16,13 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.BslPackage;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.McorePackage;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -46,9 +49,9 @@ public class FunctionReturnTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public FunctionReturnTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -74,14 +77,14 @@ public class FunctionReturnTypeCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || !(object instanceof EObject))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (isEmptyTypes((EObject)object))
|
||||
if (isEmptyTypes((EObject)object, bmTransaction))
|
||||
{
|
||||
resultAceptor.addIssue(Messages.FunctionReturnTypeCheck_Function_has_no_return_value_type,
|
||||
McorePackage.Literals.NAMED_ELEMENT__NAME);
|
||||
|
@ -39,6 +39,7 @@ import org.eclipse.xtext.scoping.IScope;
|
||||
import org.eclipse.xtext.util.Triple;
|
||||
import org.eclipse.xtext.util.Tuples;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.BslCommentUtils;
|
||||
import com._1c.g5.v8.dt.bsl.documentation.comment.BslDocumentationComment;
|
||||
@ -54,6 +55,7 @@ import com._1c.g5.v8.dt.bsl.model.SourceObjectLinkProvider;
|
||||
import com._1c.g5.v8.dt.bsl.model.UndefinedLiteral;
|
||||
import com._1c.g5.v8.dt.bsl.model.util.BslUtil;
|
||||
import com._1c.g5.v8.dt.bsl.typesystem.ExportMethodTypeProvider;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.core.platform.IV8Project;
|
||||
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
|
||||
@ -69,6 +71,8 @@ import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.metadata.mdclass.ScriptVariant;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.dt.core.api.platform.BmOperationContext;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -137,9 +141,9 @@ public class InvocationParamIntersectionCheck
|
||||
@Inject
|
||||
public InvocationParamIntersectionCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter, IV8ProjectManager v8ProjectManager,
|
||||
ExportMethodTypeProvider exportMethodTypeProvider)
|
||||
ExportMethodTypeProvider exportMethodTypeProvider, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
this.exportMethodTypeProvider = exportMethodTypeProvider;
|
||||
this.v8ProjectManager = v8ProjectManager;
|
||||
}
|
||||
@ -169,7 +173,7 @@ public class InvocationParamIntersectionCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || !(object instanceof EObject))
|
||||
{
|
||||
@ -188,16 +192,17 @@ public class InvocationParamIntersectionCheck
|
||||
if (source instanceof Method)
|
||||
{
|
||||
boolean allowDynamicTypesCheck = parameters.getBoolean(PARAM_ALLOW_DYNAMIC_TYPES_CHECK);
|
||||
checkParamTypesIntersect(inv, (Method)source, allowDynamicTypesCheck, resultAceptor, monitor);
|
||||
checkParamTypesIntersect(inv, (Method)source, allowDynamicTypesCheck, resultAceptor, bmTransaction,
|
||||
monitor);
|
||||
}
|
||||
else if (source instanceof com._1c.g5.v8.dt.mcore.Method)
|
||||
{
|
||||
checkParamTypesIntersect(inv, (com._1c.g5.v8.dt.mcore.Method)source, resultAceptor, monitor);
|
||||
checkParamTypesIntersect(inv, (com._1c.g5.v8.dt.mcore.Method)source, resultAceptor, bmTransaction, monitor);
|
||||
}
|
||||
}
|
||||
|
||||
private void checkParamTypesIntersect(Invocation inv, com._1c.g5.v8.dt.mcore.Method method,
|
||||
ResultAcceptor resultAceptor, IProgressMonitor monitor)
|
||||
ResultAcceptor resultAceptor, IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (method.getParamSet().isEmpty())
|
||||
{
|
||||
@ -285,9 +290,11 @@ public class InvocationParamIntersectionCheck
|
||||
|
||||
if (docComment != null && docComment.isPresent())
|
||||
{
|
||||
BmOperationContext typeComputationContext =
|
||||
new BmOperationContext(namingService, bmModelManager, bmTransaction);
|
||||
targetTypes = docComment.get()
|
||||
.computeParameterTypes(parameter.getName(), typeScope, scopeProvider, qualifiedNameConverter,
|
||||
commentProvider, oldFormatComment, method);
|
||||
commentProvider, oldFormatComment, method, typeComputationContext);
|
||||
}
|
||||
|
||||
if (targetTypes.isEmpty())
|
||||
@ -408,7 +415,7 @@ public class InvocationParamIntersectionCheck
|
||||
}
|
||||
|
||||
private void checkParamTypesIntersect(Invocation inv, Method method, boolean allowDynamicTypesCheck,
|
||||
ResultAcceptor resultAceptor, IProgressMonitor monitor)
|
||||
ResultAcceptor resultAceptor, IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
Environments actualEnvs = getActualEnvironments(inv);
|
||||
|
||||
@ -449,10 +456,12 @@ public class InvocationParamIntersectionCheck
|
||||
Collection<TypeItem> targetTypes = null;
|
||||
if (docComment.isPresent() && docComment.get().getParametersSection().getParameterByName(paramName) != null)
|
||||
{
|
||||
BmOperationContext typeComputationContext =
|
||||
new BmOperationContext(namingService, bmModelManager, bmTransaction);
|
||||
// if parameter declared in doc-comment then check only declared types
|
||||
targetTypes = docComment.get()
|
||||
.computeParameterTypes(paramName, typeScope, scopeProvider, qualifiedNameConverter, commentProvider,
|
||||
oldFormatComment, method);
|
||||
oldFormatComment, method, typeComputationContext);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -21,9 +21,12 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.FormalParam;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -51,9 +54,9 @@ public class MethodParamTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public MethodParamTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -78,7 +81,7 @@ public class MethodParamTypeCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || !(object instanceof EObject))
|
||||
{
|
||||
@ -87,7 +90,7 @@ public class MethodParamTypeCheck
|
||||
|
||||
FormalParam param = (FormalParam)object;
|
||||
|
||||
if (isEmptyTypes(param))
|
||||
if (isEmptyTypes(param, bmTransaction))
|
||||
{
|
||||
String message =
|
||||
MessageFormat.format(Messages.MethodParamTypeCheck_Method_param_N_has_no_value_type, param.getName());
|
||||
|
@ -24,6 +24,7 @@ import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.xtext.EcoreUtil2;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.BslPackage;
|
||||
import com._1c.g5.v8.dt.bsl.model.Expression;
|
||||
@ -35,6 +36,7 @@ import com._1c.g5.v8.dt.bsl.model.SimpleStatement;
|
||||
import com._1c.g5.v8.dt.bsl.model.StaticFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.Variable;
|
||||
import com._1c.g5.v8.dt.bsl.util.BslUtil;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.core.platform.IV8ProjectManager;
|
||||
import com._1c.g5.v8.dt.mcore.Environmental;
|
||||
@ -42,6 +44,7 @@ import com._1c.g5.v8.dt.mcore.TypeItem;
|
||||
import com._1c.g5.v8.dt.mcore.util.Environments;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -77,9 +80,10 @@ public class SimpleStatementTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public SimpleStatementTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IV8ProjectManager v8ProjectManager, IQualifiedNameConverter qualifiedNameConverter)
|
||||
IV8ProjectManager v8ProjectManager, IQualifiedNameConverter qualifiedNameConverter,
|
||||
INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
this.v8ProjectManager = v8ProjectManager;
|
||||
}
|
||||
|
||||
@ -109,7 +113,7 @@ public class SimpleStatementTypeCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
SimpleStatement statment = (SimpleStatement)object;
|
||||
|
||||
@ -158,7 +162,7 @@ public class SimpleStatementTypeCheck
|
||||
if (left instanceof StaticFeatureAccess && !((StaticFeatureAccess)left).getFeatureEntries().isEmpty()
|
||||
&& ((StaticFeatureAccess)left).getFeatureEntries().get(0).getFeature() instanceof Variable)
|
||||
{
|
||||
Collection<TypeItem> commentTypes = computeCommentTypes(right);
|
||||
Collection<TypeItem> commentTypes = computeCommentTypes(right, bmTransaction);
|
||||
newTypes.addAll(commentTypes);
|
||||
|
||||
}
|
||||
|
@ -20,14 +20,17 @@ import java.text.MessageFormat;
|
||||
import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.EmptyExpression;
|
||||
import com._1c.g5.v8.dt.bsl.model.Expression;
|
||||
import com._1c.g5.v8.dt.bsl.model.OperatorStyleCreator;
|
||||
import com._1c.g5.v8.dt.bsl.model.StringLiteral;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -55,9 +58,9 @@ public class StructureCtorValueTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public StructureCtorValueTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -82,7 +85,7 @@ public class StructureCtorValueTypeCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
OperatorStyleCreator osc = (OperatorStyleCreator)object;
|
||||
if (monitor.isCanceled() || osc.getParams().isEmpty()
|
||||
@ -109,7 +112,7 @@ public class StructureCtorValueTypeCheck
|
||||
if (totalParams > i && osc.getParams().get(i + 1) != null)
|
||||
{
|
||||
Expression param = osc.getParams().get(i + 1);
|
||||
if (isEmptyTypes(param))
|
||||
if (isEmptyTypes(param, bmTransaction))
|
||||
{
|
||||
param = param instanceof EmptyExpression ? literal : param;
|
||||
String message = MessageFormat.format(
|
||||
|
@ -28,18 +28,21 @@ import org.eclipse.emf.ecore.util.EcoreUtil;
|
||||
import org.eclipse.xtext.EcoreUtil2;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DynamicFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.FeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.Invocation;
|
||||
import com._1c.g5.v8.dt.bsl.model.SourceObjectLinkProvider;
|
||||
import com._1c.g5.v8.dt.bsl.model.util.BslUtil;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com._1c.g5.v8.dt.mcore.Method;
|
||||
import com._1c.g5.v8.dt.mcore.Type;
|
||||
import com._1c.g5.v8.dt.mcore.TypeItem;
|
||||
import com._1c.g5.v8.dt.mcore.util.McoreUtil;
|
||||
import com._1c.g5.v8.dt.platform.IEObjectTypeNames;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -79,9 +82,9 @@ public class TypedValueAddingToUntypedCollectionCheck
|
||||
*/
|
||||
@Inject
|
||||
public TypedValueAddingToUntypedCollectionCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -106,7 +109,7 @@ public class TypedValueAddingToUntypedCollectionCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || !(object instanceof EObject))
|
||||
{
|
||||
|
@ -24,6 +24,7 @@ import org.eclipse.core.runtime.IProgressMonitor;
|
||||
import org.eclipse.emf.ecore.EObject;
|
||||
import org.eclipse.xtext.naming.IQualifiedNameConverter;
|
||||
|
||||
import com._1c.g5.v8.bm.core.IBmTransaction;
|
||||
import com._1c.g5.v8.dt.bsl.common.IBslPreferences;
|
||||
import com._1c.g5.v8.dt.bsl.model.DeclareStatement;
|
||||
import com._1c.g5.v8.dt.bsl.model.ExplicitVariable;
|
||||
@ -31,7 +32,9 @@ import com._1c.g5.v8.dt.bsl.model.ImplicitVariable;
|
||||
import com._1c.g5.v8.dt.bsl.model.SimpleStatement;
|
||||
import com._1c.g5.v8.dt.bsl.model.StaticFeatureAccess;
|
||||
import com._1c.g5.v8.dt.bsl.model.Variable;
|
||||
import com._1c.g5.v8.dt.core.platform.IBmModelManager;
|
||||
import com._1c.g5.v8.dt.core.platform.IResourceLookup;
|
||||
import com.e1c.g5.dt.core.api.naming.INamingService;
|
||||
import com.e1c.g5.v8.dt.check.CheckComplexity;
|
||||
import com.e1c.g5.v8.dt.check.ICheckParameters;
|
||||
import com.e1c.g5.v8.dt.check.components.ModuleTopObjectNameFilterExtension;
|
||||
@ -59,9 +62,9 @@ public class VariableTypeCheck
|
||||
*/
|
||||
@Inject
|
||||
public VariableTypeCheck(IResourceLookup resourceLookup, IBslPreferences bslPreferences,
|
||||
IQualifiedNameConverter qualifiedNameConverter)
|
||||
IQualifiedNameConverter qualifiedNameConverter, INamingService namingService, IBmModelManager bmModelManager)
|
||||
{
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter);
|
||||
super(resourceLookup, bslPreferences, qualifiedNameConverter, namingService, bmModelManager);
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -87,7 +90,7 @@ public class VariableTypeCheck
|
||||
|
||||
@Override
|
||||
protected void check(Object object, ResultAcceptor resultAceptor, ICheckParameters parameters,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (monitor.isCanceled() || !(object instanceof EObject))
|
||||
{
|
||||
@ -96,14 +99,14 @@ public class VariableTypeCheck
|
||||
|
||||
if (object instanceof ImplicitVariable || object instanceof ExplicitVariable)
|
||||
{
|
||||
checkVariable((Variable)object, (EObject)object, resultAceptor, monitor);
|
||||
checkVariable((Variable)object, (EObject)object, resultAceptor, bmTransaction, monitor);
|
||||
}
|
||||
else if (object instanceof SimpleStatement && ((SimpleStatement)object).getLeft() instanceof StaticFeatureAccess
|
||||
&& ((StaticFeatureAccess)((SimpleStatement)object).getLeft()).getImplicitVariable() != null)
|
||||
{
|
||||
EObject checkType = ((SimpleStatement)object).getLeft();
|
||||
Variable variable = ((StaticFeatureAccess)((SimpleStatement)object).getLeft()).getImplicitVariable();
|
||||
checkVariable(variable, checkType, resultAceptor, monitor);
|
||||
checkVariable(variable, checkType, resultAceptor, bmTransaction, monitor);
|
||||
}
|
||||
else if (object instanceof DeclareStatement)
|
||||
{
|
||||
@ -114,15 +117,16 @@ public class VariableTypeCheck
|
||||
{
|
||||
return;
|
||||
}
|
||||
checkVariable(variable, variable, resultAceptor, monitor);
|
||||
checkVariable(variable, variable, resultAceptor, bmTransaction, monitor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void checkVariable(Variable variable, EObject checkObject, ResultAcceptor resultAceptor,
|
||||
IProgressMonitor monitor)
|
||||
IBmTransaction bmTransaction, IProgressMonitor monitor)
|
||||
{
|
||||
if (checkObject != null && variable != null && isEmptyTypes(checkObject) && !monitor.isCanceled())
|
||||
if (checkObject != null && variable != null && isEmptyTypes(checkObject, bmTransaction)
|
||||
&& !monitor.isCanceled())
|
||||
{
|
||||
String message =
|
||||
MessageFormat.format(Messages.VariableTypeCheck_Variable_M_has_no_value_type, variable.getName());
|
||||
|
Reference in New Issue
Block a user