profile
viewpoint
Iskander (Alex) Sharipov quasilyte @VKCOM Germany, Aachen https://twitter.com/quasilyte

cristaloleg/go-perftuner 79

Helper tool for manual Go code optimization.

gosh-lang/gosh 63

Gosh is an interpreted language for Go ecosystem written in Go

cristalhq/aconfig 47

Simple, useful and opinionated config loader.

quasilyte/astnorm 42

AST normalization experiment

quasilyte/concat 16

Demo repository for habr.com article about faster Go string concatenation.

quasilyte/benchstat.el 8

Proper Emacs Lisp benchmarking made simple.

quasilyte/avx512test 7

Utility that was used to generate initial Go AVX-512 encoder test suite.

quasilyte/gccgo_vs_gc 6

Comparing GCCGO 1.8.1 (GCC 7.2) vs GC 1.8.1 (and GC 1.10) on x86 (AMD64).

go-toolsmith/astequal 4

Package astequal provides AST (deep) equallity check operations.

quasilyte/cffi 3

Lazy way to call CGo functions.

delete branch VKCOM/noverify

delete branch : quasilyte/fix/irfmt_print_newexpr_parens

delete time in 6 hours

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha b41764d3e892af0fd470d152b66ab76f3d734c7f

ir/irfmt: print new expr without () if Args==nil (#665) This is consistent with what we had before the IR transition. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 6 hours

PR merged VKCOM/noverify

ir/irfmt: print new expr without () if Args==nil

This is consistent with what we had before the IR transition.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+32 -1

0 comment

2 changed files

quasilyte

pr closed time in 6 hours

PR opened VKCOM/noverify

ir/irfmt: print new expr without () if Args==nil

This is consistent with what we had before the IR transition.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+32 -1

0 comment

2 changed files

pr created time in 7 hours

create barnchVKCOM/noverify

branch : quasilyte/fix/irfmt_print_newexpr_parens

created branch time in 7 hours

issue commentgo-critic/go-critic

Tag a release to fix a broken dependency

Sorry for the inconvenience.

joel0

comment created time in 8 hours

issue commentgo-critic/go-critic

Tag a release to fix a broken dependency

https://github.com/go-critic/go-critic/releases/tag/v0.5.1

joel0

comment created time in 8 hours

created taggo-critic/go-critic

tagv0.5.1

The most opinionated Go source code linter for code audit.

created time in 8 hours

release go-critic/go-critic

v0.5.1

released time in 8 hours

pull request commentgo-critic/go-critic

Allow []string as config value type

We updated ruleguard and now it's possible to use the ruleset merging function. :) https://github.com/go-critic/go-critic/pull/952

Eun

comment created time in 8 hours

delete branch go-critic/go-critic

delete branch : quasilyte/update_ruleguard

delete time in 8 hours

push eventgo-critic/go-critic

Iskander (Alex) Sharipov

commit sha c61cd34f788cf88e9ccd4f92c9911b86bc01cf60

checkers: update ruleguard to v0.2.0 (#952) Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 8 hours

PR merged go-critic/go-critic

checkers: update ruleguard to v0.2.0

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+26 -8

0 comment

3 changed files

quasilyte

pr closed time in 8 hours

push eventgo-critic/go-critic

Iskander Sharipov

commit sha e1895f1bc26b3dcf989e15742175f346af8c5958

checkers: update ruleguard to v0.2.0 Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 8 hours

PR opened go-critic/go-critic

checkers: update ruleguard to v0.2.0

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+26 -3

0 comment

3 changed files

pr created time in 9 hours

create barnchgo-critic/go-critic

branch : quasilyte/update_ruleguard

created branch time in 9 hours

issue commentquasilyte/go-ruleguard

breaking api change in ruleguard.go -> Context -> Report ?

Release v0.2.0 is out and we're also using Go modules now.

pierreca

comment created time in 9 hours

created tagquasilyte/go-ruleguard

tagv0.2.0

Define and run pattern-based custom linting rules

created time in 9 hours

release quasilyte/go-ruleguard

v0.2.0

released time in 9 hours

delete branch quasilyte/go-ruleguard

delete branch : quasilyte/init_go_mod

delete time in 9 hours

push eventquasilyte/go-ruleguard

Iskander (Alex) Sharipov

commit sha 7e7cc881f19e8115ba55641822b2701741fcb463

start using Go modules (#67) Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 9 hours

PR merged quasilyte/go-ruleguard

start using Go modules

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+27 -0

0 comment

2 changed files

quasilyte

pr closed time in 9 hours

PR opened quasilyte/go-ruleguard

start using Go modules

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+27 -0

0 comment

2 changed files

pr created time in 9 hours

create barnchquasilyte/go-ruleguard

branch : quasilyte/init_go_mod

created branch time in 9 hours

issue commentquasilyte/go-ruleguard

breaking api change in ruleguard.go -> Context -> Report ?

I'll start by updating the ruleguard version in go-critic. This should fix the golangci build.

pierreca

comment created time in 9 hours

push eventquasilyte/go-ruleguard

Damian Gryski

commit sha 6a969cc2e8f2072e5053f4018835b9afb6c775b3

rules.go: add parentheses to math/bits matcher rules (#65) Needed to match the following code: func rotate_right(v uint64, k uint) uint64 { return (v >> k) | (v << (64 - k)) }

view details

push time in 9 hours

PR merged quasilyte/go-ruleguard

rules.go: add parentheses to math/bits matcher rules

Needed to match the following code:

func rotate_right(v uint64, k uint) uint64 {
	return (v >> k) | (v << (64 - k))
}
+38 -10

0 comment

1 changed file

dgryski

pr closed time in 9 hours

issue commentquasilyte/go-ruleguard

breaking api change in ruleguard.go -> Context -> Report ?

Am I right that we basically need to bumb at least minor version to make things work?

pierreca

comment created time in 10 hours

delete branch VKCOM/noverify

delete branch : quasilyte/refactor/add_workspace_pkg

delete time in 16 hours

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha f7373090f951e1b78f06c5da191ea878f6ce0824

linter: move dirwalk-related code to workspace pkg (#664) The FS traversal does not depend on the linter package details, so we can move it somewhere else. workspace package is intended to be used as a toolbox for working with the PHP project (its files, settings, etc). Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 16 hours

PR merged VKCOM/noverify

linter: move dirwalk-related code to workspace pkg

The FS traversal does not depend on the linter package details, so we can move it somewhere else.

workspace package is intended to be used as a toolbox for working with the PHP project (its files, settings, etc).

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+410 -387

0 comment

12 changed files

quasilyte

pr closed time in 16 hours

push eventVKCOM/noverify

Iskander Sharipov

commit sha 0aab7cd50c7fc5de193a2a96fafed2b2f54f0cac

linter: move dirwalk-related code to workspace pkg The FS traversal does not depend on the linter package details, so we can move it somewhere else. workspace package is intended to be used as a toolbox for working with the PHP project (its files, settings, etc). Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 16 hours

PR opened VKCOM/noverify

linter: move dirwalk-related code to workspace pkg

The FS traversal does not depend on the linter package details, so we can move it somewhere else.

workspace package is intended to be used as a toolbox for working with the PHP project (its files, settings, etc).

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+405 -389

0 comment

11 changed files

pr created time in 17 hours

create barnchVKCOM/noverify

branch : quasilyte/refactor/add_workspace_pkg

created branch time in 17 hours

created tagquasilyte/go-ruleguard

tagv0.1.4

Define and run pattern-based custom linting rules

created time in 18 hours

release quasilyte/go-ruleguard

v0.1.4

released time in 18 hours

delete branch quasilyte/go-ruleguard

delete branch : quasilyte/feature/multiple_rule_files_support

delete time in 18 hours

push eventquasilyte/go-ruleguard

Iskander (Alex) Sharipov

commit sha 6be9805bc5590c4b8a76bb8c2f0a2ef36663a92c

all: added support for multi-file rule sets (#64) -rules flag becomes a comma-separated list of rule filenames. If only one filename is provided, no effects will be noticed. If more than one filenames are provided, they are merged into one rule set that combines all rules. To avoid information loss, we pass GoRuleInfo object to the Report() callback, so the application can figure out which file provided a rule that triggered. As a demonstration, cmd/ruleguard now appends the "(filename)" suffix to the warning messages when executed with multiple rule files. The new ruleguard.MergeRuleSets() function can be used in integrations like https://github.com/go-critic/go-critic/pull/947 Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 18 hours

PR merged quasilyte/go-ruleguard

all: added support for multi-file rule sets

-rules flag becomes a comma-separated list of rule filenames. If only one filename is provided, no effects will be noticed. If more than one filenames are provided, they are merged into one rule set that combines all rules.

To avoid information loss, we pass GoRuleInfo object to the Report() callback, so the application can figure out which file provided a rule that triggered.

As a demonstration, cmd/ruleguard now appends the "(filename)" suffix to the warning messages when executed with multiple rule files.

The new ruleguard.MergeRuleSets() function can be used in integrations like https://github.com/go-critic/go-critic/pull/947

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+84 -22

1 comment

6 changed files

quasilyte

pr closed time in 18 hours

push eventVKCOM/noverify

Makhnev Petr

commit sha aa91611ec2af7e6c4cff1fb82c51d9cf4bbb15ad

linter: infer types in list() over shape (#660) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

push time in 18 hours

PR merged VKCOM/noverify

linter: infer types in list() over shape

Added type inference for each variable when destructuring variable with the \shape type or function that returns \shape.

For example:

/** @return shape(key:\Foo, key2:float, key3:int) */
function asShapeWithStringKey() { return []; }

function foo() {
  ["key" => $a, "key2" => $b, "key3" => $c] = asShapeWithStringKey();

  exprtype($a, "\Foo");
  exprtype($b, "float");
  exprtype($c, "int");
}
+117 -10

0 comment

2 changed files

i582

pr closed time in 18 hours

push eventi582/noverify

Iskander (Alex) Sharipov

commit sha 954a4d2917a840bcca6433de6e84019d73132a9e

ir: simplify argument lists (and remove ArgumentList node) (#661) This is done to simplify arguments handling. We can't store arguments as []*Argument since it will require us to duplicate code that accepts []Node (and we don't have generics yet). As a workaround, all nodes with arguments get Arg(i) method that returns ith argument type-asserted to *Argument. So we can do: call.Arg(i) Instead of: call.ArgumentList.Arguments[i].(*ir.Argument) This does look like an improvement. To avoid information loss, freefloating from the ArgumentList is stored inside the call-like node itself. So if we ever need it, it's there. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 5923f9d98817dc10f811f42a87d7579d16c8d30e

irgen: rename to ir/irconv (#662) We may have irgen package later that generates IR-related code. The ir/irconv package does not generate anything, it converts php-parser AST into our own IR. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Makhnev Petr

commit sha 78f402b6807d11f8289fc59ece33e996f93fe560

solver: added processing of array unpacking (...$arr) (#663) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 3d103aec6a98f399dce2914656a2740553b8c662

Merge branch 'master' into InferTypesInListOverShape

view details

push time in 18 hours

push eventVKCOM/noverify

Makhnev Petr

commit sha 78f402b6807d11f8289fc59ece33e996f93fe560

solver: added processing of array unpacking (...$arr) (#663) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

push time in 18 hours

pull request commentVKCOM/noverify

linter: added processing of array unpacking (...$arr)

I think it's a solver package change, not linter package change. I'll edit the commit message.

i582

comment created time in 18 hours

push eventi582/noverify

Iskander (Alex) Sharipov

commit sha 5923f9d98817dc10f811f42a87d7579d16c8d30e

irgen: rename to ir/irconv (#662) We may have irgen package later that generates IR-related code. The ir/irconv package does not generate anything, it converts php-parser AST into our own IR. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 8fce424a05ac027bd29d8e846221ac9ad80876fe

Merge branch 'master' into AddArrayItemUnpackInLinter

view details

push time in 19 hours

push eventquasilyte/go-ruleguard

Iskander Sharipov

commit sha 41762f870fe0807d8a6be790c828888bde33936e

all: added support for multi-file rule sets -rules flag becomes a comma-separated list of rule filenames. If only one filename is provided, no effects will be noticed. If more than one filenames are provided, they are merged into one rule set that combines all rules. To avoid information loss, we pass GoRuleInfo object to the Report() callback, so the application can figure out which file provided a rule that triggered. As a demonstration, cmd/ruleguard now appends the "(filename)" suffix to the warning messages when executed with multiple rule files. The new ruleguard.MergeRuleSets() function can be used in integrations like https://github.com/go-critic/go-critic/pull/947 Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 19 hours

pull request commentquasilyte/go-ruleguard

all: added support for multi-file rule sets

Good call!

quasilyte

comment created time in 19 hours

Pull request review commentVKCOM/noverify

linter: infer types in list() over shape

 func (b *BlockWalker) handleAssignReference(a *ir.AssignReference) bool { 	return false } -func (b *BlockWalker) handleAssignList(items []*ir.ArrayItemExpr, info meta.ClassInfo, isShape bool) {-	if isShape {-		for i, item := range items {-			prop, ok := info.Properties[fmt.Sprint(i)]-			var tp meta.TypesMap-			if !ok {-				tp = meta.NewTypesMap("unknown_from_list")-			} else {-				tp = prop.Typ+func (b *BlockWalker) handleAssignShapeToList(items []*ir.ArrayItemExpr, info meta.ClassInfo) {+	for i, item := range items {+		var prop meta.PropertyInfo+		var ok bool++		if item.Key != nil {+			var key string+			switch keyNode := item.Key.(type) {+			case *ir.String:+				key = unquote(keyNode.Value)+			case *ir.Lnumber:+				key = keyNode.Value+			case *ir.Dnumber:+				key = keyNode.Value+			default:+				key = "unhandled_type_of_key"

I would keep the empty string and avoid lookup for unhandled_type_of_key. It's also suspicious if there is a unhandled_type_of_key key in a shape. ;)

i582

comment created time in 19 hours

delete branch VKCOM/noverify

delete branch : quasilyte/refactor/rename_irgen

delete time in 19 hours

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha 5923f9d98817dc10f811f42a87d7579d16c8d30e

irgen: rename to ir/irconv (#662) We may have irgen package later that generates IR-related code. The ir/irconv package does not generate anything, it converts php-parser AST into our own IR. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 19 hours

PR merged VKCOM/noverify

irgen: rename to ir/irconv

We may have irgen package later that generates IR-related code.

The ir/irconv package does not generate anything, it converts php-parser AST into our own IR.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+14 -14

0 comment

8 changed files

quasilyte

pr closed time in 19 hours

PR opened VKCOM/noverify

irgen: rename to ir/irconv

We may have irgen package later that generates IR-related code.

The ir/irconv package does not generate anything, it converts php-parser AST into our own IR.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+14 -14

0 comment

8 changed files

pr created time in 19 hours

create barnchVKCOM/noverify

branch : quasilyte/refactor/rename_irgen

created branch time in 19 hours

delete branch VKCOM/noverify

delete branch : quasilyte/ir/simplify_args_list

delete time in 20 hours

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha 954a4d2917a840bcca6433de6e84019d73132a9e

ir: simplify argument lists (and remove ArgumentList node) (#661) This is done to simplify arguments handling. We can't store arguments as []*Argument since it will require us to duplicate code that accepts []Node (and we don't have generics yet). As a workaround, all nodes with arguments get Arg(i) method that returns ith argument type-asserted to *Argument. So we can do: call.Arg(i) Instead of: call.ArgumentList.Arguments[i].(*ir.Argument) This does look like an improvement. To avoid information loss, freefloating from the ArgumentList is stored inside the call-like node itself. So if we ever need it, it's there. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 20 hours

PR merged VKCOM/noverify

ir: simplify argument lists (and remove ArgumentList node)

This is done to simplify arguments handling. We can't store arguments as []*Argument since it will require us to duplicate code that accepts []Node (and we don't have generics yet).

As a workaround, all nodes with arguments get Arg(i) method that returns ith argument type-asserted to *Argument.

So we can do:

call.Arg(i)

Instead of:

call.ArgumentList.Arguments[i].(*ir.Argument)

This does look like an improvement.

To avoid information loss, freefloating from the ArgumentList is stored inside the call-like node itself. So if we ever need it, it's there.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+192 -190

0 comment

19 changed files

quasilyte

pr closed time in 20 hours

PR opened VKCOM/noverify

ir: simplify argument lists (and remove ArgumentList node)

This is done to simplify arguments handling. We can't store arguments as []*Argument since it will require us to duplicate code that accepts []Node (and we don't have generics yet).

As a workaround, all nodes with arguments get Arg(i) method that returns ith argument type-asserted to *Argument.

So we can do: call.Arg(i)

Instead of: call.ArgumentList.Arguments[i].(*ir.Argument)

This does look like an improvement.

To avoid information loss, freefloating from the ArgumentList is stored inside the call-like node itself. So if we ever need it, it's there.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+192 -190

0 comment

19 changed files

pr created time in 20 hours

create barnchVKCOM/noverify

branch : quasilyte/ir/simplify_args_list

created branch time in 20 hours

pull request commentgo-critic/go-critic

Allow []string as config value type

Instead of running all rule sets one by one, we can use a new MergeRuleSets function. I also preserved the rule defining filename as it looks like you're interested in it. See https://github.com/quasilyte/go-ruleguard/pull/64

Eun

comment created time in a day

PR opened quasilyte/go-ruleguard

all: added support for multi-file rule sets

-rules flag becomes a comma-separated list of rule filenames. If only one filename is provided, no effects will be noticed. If more than one filenames are provided, they are merged into one rule set that combines all rules.

To avoid information loss, we pass GoRuleInfo object to the Report() callback, so the application can figure out which file provided a rule that triggered.

As a demonstration, cmd/ruleguard now appends the "(filename)" suffix to the warning messages when executed with multiple rule files.

The new ruleguard.MergeRuleSets() function can be used in integrations like https://github.com/go-critic/go-critic/pull/947

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+83 -22

0 comment

6 changed files

pr created time in a day

pull request commentgo-critic/go-critic

Allow []string as config value type

What about this: keep rules param as string and do a split on comma. So we can treat as both list and a single filename.

Eun

comment created time in a day

delete branch VKCOM/noverify

delete branch : quasilyte/ir/rework_name

delete time in 2 days

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha 6e78bb980c2a6c38f4f6fceb97b6f6690e99d2a3

ir: rework Name nodes (#659) Merge Name+FullyQualifiedName and store all parts as a combined string. When we need to access name individual parts, we can do so via Name methods. They are zero-alloc and are somewhat cheap to compute (not more expensive than having to turn old name parts to string for sure and compare them via NameEquals instead of just ==). FQN are expressed with Name.Value with leading `\`. Normal names do not have leading `\`. RelativeName is converted into Name with namespace expansion during the irgen phase, so we eliminate that node type as well. Resolved RelativeNames are FQNs. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

PR merged VKCOM/noverify

ir: rework Name nodes

Merge Name+FullyQualifiedName and store all parts as a combined string.

When we need to access name individual parts, we can do so via Name methods. They are zero-alloc and are somewhat cheap to compute (not more expensive than having to turn old name parts to string for sure and compare them via NameEquals instead of just ==).

FQN are expressed with Name.Value with leading \. Normal names do not have leading \.

RelativeName is converted into Name with namespace expansion during the irgen phase, so we eliminate that node type as well. Resolved RelativeNames are FQNs.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+555 -897

0 comment

32 changed files

quasilyte

pr closed time in 2 days

push eventVKCOM/noverify

Makhnev Petr

commit sha a01f56c6ca8ea04a35b71787c3759296d38cd3a4

linter: added type inference for arrays of complex types (#625) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha c82f17f7414ecd9195ac8b1d9dc71f80d290d468

cmd: fix -allow-disable for git mode (#658) We passed nil allow disable regexp for git mode. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 4058c827548357d0dcaa7c2bab7fded7fd4857a2

Merge branch 'master' into quasilyte/ir/rework_name

view details

push time in 2 days

push eventVKCOM/noverify

Iskander Sharipov

commit sha e1152f6c8d8a4f82235329b9c50a9f0e91e0bc5b

ir: rework Name nodes Merge Name+FullyQualifiedName and store all parts as a combined string. When we need to access name individual parts, we can do so via Name methods. They are zero-alloc and are somewhat cheap to compute (not more expensive than having to turn old name parts to string for sure and compare them via NameEquals instead of just ==). FQN are expressed with Name.Value with leading `\`. Normal names do not have leading `\`. RelativeName is converted into Name with namespace expansion during the irgen phase, so we eliminate that node type as well. Resolved RelativeNames are FQNs. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

push eventVKCOM/noverify

Iskander Sharipov

commit sha c0f26b2f53e04a361f97012ef6c3db67df553d5d

ir: rework Name nodes Merge Name+FullyQualifiedName and store all parts as a combined string. When we need to access name individual parts, we can do so via Name methods. They are zero-alloc and are somewhat cheap to compute (not more expensive than having to turn old name parts to string for sure and compare them via NameEquals instead of just ==). FQN are expressed with Name.Value with leading `\`. Normal names do not have leading `\`. RelativeName is converted into Name with namespace expansion during the irgen phase, so we eliminate that node type as well. Resolved RelativeNames are FQNs. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

push eventVKCOM/noverify

Makhnev Petr

commit sha a01f56c6ca8ea04a35b71787c3759296d38cd3a4

linter: added type inference for arrays of complex types (#625) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha c82f17f7414ecd9195ac8b1d9dc71f80d290d468

cmd: fix -allow-disable for git mode (#658) We passed nil allow disable regexp for git mode. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 7fae34e718ce44f65a69a682421396b04f451ab8

Merge branch 'master' into quasilyte/ir/rework_name

view details

push time in 2 days

PR opened VKCOM/noverify

ir: rework Name nodes

Merge Name+FullyQualifiedName and store all parts as a combined string.

When we need to access name individual parts, we can do so via Name methods. They are zero-alloc and are somewhat cheap to compute (not more expensive than having to turn old name parts to string for sure and compare them via NameEquals instead of just ==).

FQN are expressed with Name.Value with leading \. Normal names do not have leading \.

RelativeName is converted into Name with namespace expansion during the irgen phase, so we eliminate that node type as well. Resolved RelativeNames are FQNs.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+554 -895

0 comment

31 changed files

pr created time in 2 days

create barnchVKCOM/noverify

branch : quasilyte/ir/rework_name

created branch time in 2 days

delete branch VKCOM/noverify

delete branch : quasilyte/fix/allow_disable_for_git_mode

delete time in 2 days

PR merged VKCOM/noverify

cmd: fix -allow-disable for git mode

We passed nil allow disable regexp for git mode.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+14 -14

0 comment

1 changed file

quasilyte

pr closed time in 2 days

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha c82f17f7414ecd9195ac8b1d9dc71f80d290d468

cmd: fix -allow-disable for git mode (#658) We passed nil allow disable regexp for git mode. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

issue commentgo-critic/go-critic

lint: suggest to rename camelCase files

I don't think we have a single convention even inside our project. :)

cristaloleg

comment created time in 2 days

PR opened VKCOM/noverify

cmd: fix -allow-disable for git mode

We passed nil allow disable regexp for git mode.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+14 -14

0 comment

1 changed file

pr created time in 2 days

create barnchVKCOM/noverify

branch : quasilyte/fix/allow_disable_for_git_mode

created branch time in 2 days

push eventVKCOM/noverify

Makhnev Petr

commit sha a01f56c6ca8ea04a35b71787c3759296d38cd3a4

linter: added type inference for arrays of complex types (#625) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

PR merged VKCOM/noverify

linter: added type inference for arrays of complex types
class Foo {}
$a = [new Foo(), new Foo()];
// exprtype($a, \Foo[]);
$b = [[new Foo(), new Foo()],[new Foo(), new Foo()]];
// exprtype($b, "\Foo[][]");
+92 -47

1 comment

3 changed files

i582

pr closed time in 2 days

pull request commentVKCOM/noverify

linter: added the ability to type inference for arguments to callback function when calling a function with this callback.

@YuriyNasretdinov could you take a look as well? :)

i582

comment created time in 2 days

Pull request review commentVKCOM/noverify

linter: added the ability to type inference for arguments to callback function when calling a function with this callback.

 func (m TypesMap) Iterate(cb func(typ string)) { 		cb(k) 	} }++// Checks that the map contains only arrays.+// Not for *Lazy* type.+func (m TypesMap) ContainsOnlyArrays() bool {+	for typ := range m.m {+		if !strings.HasSuffix(typ, "[]") {+			return false+		}+	}+	return true+}++// Returns the base type for an array. T[] -> T, T[][] -> T[].+// Not for *Lazy* type.+func (m TypesMap) ArrayBaseType() (TypesMap, bool) {

Please use "ElemType" wording here instead of "BaseType".

i582

comment created time in 2 days

Pull request review commentVKCOM/noverify

linter: added the ability to type inference for arguments to callback function when calling a function with this callback.

 function as_shape($x) {   return $x; } +class Foo {}++function infer_types_in_callback() {+  /** @var Foo[] $a */+  $a = [];++  array_map(function($item) {}, $a);

I would like the array_map result to be used. Tests should have valid code that doesn't trigger any warnings (preferably).

i582

comment created time in 2 days

Pull request review commentVKCOM/noverify

linter: added the ability to type inference for arguments to callback function when calling a function with this callback.

 import ( //     38 - replaced TypesMap.immutable:bool with flags:uint8. //          added mapPrecise flag to mark precise type maps. //     39 - added new field Value in ConstantInfo-const cacheVersion = 39+//     40 - added array_map call in test+const cacheVersion = 40

You did not change the cache layout. The version can be left alone.

i582

comment created time in 2 days

push eventi582/noverify

Makhnev Petr

commit sha 20799436679c0b97687f968edba0ee476053d1d6

tests: moved rules_test.go to separate rules folder (#654)

view details

Makhnev Petr

commit sha 686de30cfe41d75e3010e570265a7d578e9e54aa

tests: moved the regression_test.go tests to separate regression folder, each test in separate file (#653) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Makhnev Petr

commit sha 378402dd21a0ae28135783fdbfc75ba292fe0483

tests: moved bench_test.go to separate bench folder (#652) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Makhnev Petr

commit sha f59cb5243c77be84e27475276ed0dca22b7a87a0

ir/irutil: moved files from php/astutil to ir/irutil (#651) Co-authored-by: Iskander (Alex) Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 05e03b0ee5a4c3b6e56c683d28cf86487ad86bc1

ir: merge type cast expressions into TypeCastExpr (#655) It seems like this is a worthwhile simplification. Only one place becomes more complex (solver exprtype) while all other usages become better. Unset cast is not merged into TypeCastExpr as it's very special and should not be handled in combination with type casts. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 2767923a2cd63c94cdd9216368362bd454a66716

ir: merge include+require nodes into ImportExpr (#656) Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 39d0b16e709bc154cdcbd9f380d35d22c85d16e4

irgen: pass explicit convertion state (#657) This will be useful later to resolve relative namespace nodes into the FQN. We'll store current namespace inside the convState object. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

Iskander (Alex) Sharipov

commit sha 1a4337019f5506dbfd08bcfb5390a645f7dd8fa2

Merge branch 'master' into ImprovedTypeInferenceForArrays

view details

push time in 2 days

delete branch VKCOM/noverify

delete branch : quasilyte/ir/explicit_irgen_state

delete time in 2 days

push eventVKCOM/noverify

Iskander (Alex) Sharipov

commit sha 39d0b16e709bc154cdcbd9f380d35d22c85d16e4

irgen: pass explicit convertion state (#657) This will be useful later to resolve relative namespace nodes into the FQN. We'll store current namespace inside the convState object. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

PR merged VKCOM/noverify

irgen: pass explicit convertion state

This will be useful later to resolve relative namespace nodes into the FQN. We'll store current namespace inside the convState object.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+59 -51

0 comment

1 changed file

quasilyte

pr closed time in 2 days

push eventVKCOM/noverify

Iskander Sharipov

commit sha fdda627c0b8aefc3c839551471972be297493b52

irgen: pass explicit convertion state This will be useful later to resolve relative namespace nodes into the FQN. We'll store current namespace inside the convState object. Signed-off-by: Iskander Sharipov <quasilyte@gmail.com>

view details

push time in 2 days

PR opened VKCOM/noverify

irgen: pass explicit convertion state

This will be useful later to resolve relative namespace nodes into the FQN. We'll store current namespace inside the convState object.

Signed-off-by: Iskander Sharipov quasilyte@gmail.com

+58 -50

0 comment

1 changed file

pr created time in 2 days

create barnchVKCOM/noverify

branch : quasilyte/ir/explicit_irgen_state

created branch time in 2 days

delete branch quasilyte/Compiler-Development

delete branch : patch-1

delete time in 2 days

PR opened mgaudet/CompilerJobs

readme: add Kotlin team location

It's probably not limited to Saint Petersburg, but the compiler team is mostly located there.

+2 -0

0 comment

1 changed file

pr created time in 2 days

push eventquasilyte/CompilerJobs

Iskander (Alex) Sharipov

commit sha 94ab3914e4c5c39ff5211b3dc5a7e1c4542457ab

readme: add Kotlin team location It's probably not limited to Saint Petersburg, but the compiler team is mostly located there.

view details

push time in 2 days

fork quasilyte/CompilerJobs

A listing of compiler, language and runtime teams for people looking for jobs in this area

https://mgaudet.github.io/CompilerJobs/

fork in 2 days

PR opened true-grue/Compiler-Development

readme: add mgaudet/CompilerJobs link

mgaudet/CompilerJobs is a community-driven effort to make a list of companies where one can find a compiler-related job.

+1 -0

0 comment

1 changed file

pr created time in 2 days

push eventquasilyte/Compiler-Development

Iskander (Alex) Sharipov

commit sha 5fe69b59c9355d6854d79106bbb353c24682877e

readme: add mgaudet/CompilerJobs link

view details

push time in 2 days

startedtrue-grue/Compiler-Development

started time in 2 days

delete branch VKCOM/noverify

delete branch : quasilyte/ir/merge_require_and_include_nodes

delete time in 2 days

more